Hậu tố f (hoặc F) bắt buộc khi khai báo literal số thực kiểu float trong C#. Nếu không có hậu tố, trình biên dịch coi literal đó là double (mặc định), dẫn đến lỗi biên dịch do không thể chuyển đổi ngầm từ double sang float (mất độ chính xác).
Ví dụ
float val = 30.22f; // ✅ Đúng - float literal
float val2 = 30.22; // ❌ Sai - double literal, cần cast: (float)30.22
Mã nguồn hoàn chỉnh
using System.IO;
using System;
public class Program
{
public static void Main()
{
float val = 30.22f;
Console.WriteLine(val);
}
}
Kết quả
30.22
Các hậu tố số thực (Real Literal Suffixes)
| Hậu tố | Kiểu | Ví dụ |
|---|---|---|
| f / F | float (32-bit) | 3.14f, 1.5F |
| d / D | double (64-bit) - mặc định | 3.14, 3.14d |
| m / M | decimal (128-bit) | 3.14m, 100M |
Tại sao C# yêu cầu hậu tố?
doublecó độ chính xác 15-17 chữ số,floatchỉ 7 chữ số.- Chuyển ngầm
double → floatcó thể mất dữ liệu. - C# ép lập trình viên xác nhận ý định bằng hậu tố
f.
Lưu ý
- Hậu tố không phân biệt chữ hoa/thường:
f=F. - Khi dùng biến
floattrong biểu thức vớidouble, kết quả làdouble(type promotion). decimalkhông chuyển đổi ngầm vớifloat/double- cần cast rõ ràng.