Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

So sánh Integer Literals và Floating-point Literals trong C#

C# phân biệt rõ ràng giữa hằng số nguyên (integer literals) và hằng số thực (floating-point literals) về cú pháp, kiểu mặc định và cách sử dụng.

1. Integer Literals (Hằng số nguyên)

Biểu diễn số nguyên. Có các hệ cơ số:

Hệ cơ sốTiền tốVí dụ
Thập phân (Decimal)Không có10, 200, 42
Thập lục phân (Hex)0x hoặc 0X0xFF (255), 0x1A3F
Nhị phân (Binary - C# 7+)0b hoặc 0B0b1010 (10), 0b1111_0000

Hậu tố kiểu (Type Suffixes)

Hậu tốKiểuVí dụ
Không cóint (mặc định), uint, long, ulong (tùy giá trị)10, 3000000000 (uint)
U / uuint, ulong100U
L / llong, ulong100L
UL / ul / Lu / lUulong100UL

Ví dụ Integer

using System;
class Program {
    static void Main() {
        int a = 200;
        long b = 3000000000L; // Cần L vì > int.MaxValue
        uint c = 400U;
        int hex = 0xFF; // 255
        int bin = 0b1010; // 10 (C# 7+)
        Console.WriteLine($"{a}, {b}, {c}, {hex}, {bin}");
    }
}

2. Floating-point Literals (Hằng số thực)

Biểu diễn số có phần thập phân. Hai dạng:

  • Decimal form: 3.14, .5, 10., 1.5e2 (150)
  • Exponential form: 1.5E2, 2E-3 (0.002)

Hậu tố kiểu

Hậu tốKiểuVí dụ
Không códouble (mặc định)3.14, 1.5E-5
F / ffloat3.14f, 1.5E2F
D / ddouble (tường minh)3.14D
M / mdecimal3.14m, 0.001M

Ví dụ Floating-point

using System;
class Program {
    static void Main() {
        float f = 4.89f;        // Cần f
        double d = 3.14159;     // Mặc định double
        decimal m = 123.456m;   // Cần m
        double exp = 314159E-5; // = 3.14159
        Console.WriteLine($"{f}, {d}, {m}, {exp}");
    }
}

Bảng so sánh tóm tắt

Đặc điểmInteger LiteralsFloating-point Literals
Phần thập phânKhôngCó (dấu . hoặc e/E)
Kiểu mặc địnhintdouble
Hệ cơ số10, 16 (0x), 2 (0b)Chỉ 10 (với e/E)
Dấu gạch dưới _Có (C# 7+)Có (C# 7+)
Ép ngầm (Implicit conversion)int → long, float, double, decimalfloat → double (không ngầm ngược lại)

Lưu ý: decimal dùng cho tiền tệ/tài chính (28-29 chữ số chính xác). float/double dùng cho khoa học/kỹ thuật (chuẩn IEEE 754, có lỗi làm tròn nhị phân).