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

Tại sao cần hậu tố 'f' khi khai báo float trong C#?

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ểuVí dụ
f / Ffloat (32-bit)3.14f, 1.5F
d / Ddouble (64-bit) - mặc định3.14, 3.14d
m / Mdecimal (128-bit)3.14m, 100M

Tại sao C# yêu cầu hậu tố?

  • double có độ chính xác 15-17 chữ số, float chỉ 7 chữ số.
  • Chuyển ngầm double → float có 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 float trong biểu thức với double, kết quả là double (type promotion).
  • decimal không chuyển đổi ngầm với float/double - cần cast rõ ràng.