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 0X | 0xFF (255), 0x1A3F |
| Nhị phân (Binary - C# 7+) | 0b hoặc 0B | 0b1010 (10), 0b1111_0000 |
Hậu tố kiểu (Type Suffixes)
| Hậu tố | Kiểu | Ví dụ |
|---|---|---|
| Không có | int (mặc định), uint, long, ulong (tùy giá trị) | 10, 3000000000 (uint) |
U / u | uint, ulong | 100U |
L / l | long, ulong | 100L |
UL / ul / Lu / lU | ulong | 100UL |
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ểu | Ví dụ |
|---|---|---|
| Không có | double (mặc định) | 3.14, 1.5E-5 |
F / f | float | 3.14f, 1.5E2F |
D / d | double (tường minh) | 3.14D |
M / m | decimal | 3.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ểm | Integer Literals | Floating-point Literals |
|---|---|---|
| Phần thập phân | Không | Có (dấu . hoặc e/E) |
| Kiểu mặc định | int | double |
| 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, decimal | float → 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).