Phương thức Single.ToString() trong C# được dùng để chuyển đổi giá trị số của instance float này thành biểu diễn chuỗi tương đương. Hỗ trợ nhiều định dạng chuẩn và tùy chỉnh.
Cú pháp
public override string ToString(); public string ToString(string format); public string ToString(IFormatProvider provider); public string ToString(string format, IFormatProvider provider);
Ví dụ 1: Vô cực dương, số âm, và các kiểm tra đặc biệt
using System;
public class Demo
{
public static void Main()
{
float f1 = 10.0f / 0.0f; // PositiveInfinity
float f2 = -3.0f;
Console.WriteLine("Giá trị 1 (String) = " + f1.ToString());
Console.WriteLine("Mã băm giá trị 1 = " + f1.GetHashCode());
Console.WriteLine("TypeCode giá trị 1 = " + f1.GetTypeCode());
Console.WriteLine("Là vô cực? = " + Single.IsInfinity(f1));
Console.WriteLine("Là NaN? = " + Single.IsNaN(f1));
Console.WriteLine("Là vô cực dương? = " + Single.IsPositiveInfinity(f1));
Console.WriteLine("\nGiá trị 2 (String) = " + f2.ToString());
Console.WriteLine("Mã băm giá trị 2 = " + f2.GetHashCode());
Console.WriteLine("TypeCode giá trị 2 = " + f2.GetTypeCode());
Console.WriteLine("Là vô cực? = " + Single.IsInfinity(f2));
Console.WriteLine("Là NaN? = " + Single.IsNaN(f2));
Console.WriteLine("Là vô cực dương? = " + Single.IsPositiveInfinity(f2));
}
}
Kết quả
Giá trị 1 (String) = ∞ Mã băm giá trị 1 = 2139095040 TypeCode giá trị 1 = Single Là vô cực? = True Là NaN? = False Là vô cực dương? = True Giá trị 2 (String) = -3 Mã băm giá trị 2 = -1069547520 TypeCode giá trị 2 = Single Là vô cực? = False Là NaN? = False Là vô cực dương? = False
Ví dụ 2: Vô cực dương, NaN, vô cực âm
using System;
public class Demo
{
public static void Main()
{
float f1 = 5.0f / 0.0f; // PositiveInfinity
float f2 = 0.0f / 0.0f; // NaN
Console.WriteLine("Giá trị 1 (String) = " + f1.ToString());
Console.WriteLine("Mã băm giá trị 1 = " + f1.GetHashCode());
Console.WriteLine("TypeCode giá trị 1 = " + f1.GetTypeCode());
Console.WriteLine("Là vô cực? = " + Single.IsInfinity(f1));
Console.WriteLine("Là NaN? = " + Single.IsNaN(f1));
Console.WriteLine("Là vô cực âm? = " + Single.IsNegativeInfinity(f1));
Console.WriteLine("\nGiá trị 2 (String) = " + f2.ToString());
Console.WriteLine("Mã băm giá trị 2 = " + f2.GetHashCode());
Console.WriteLine("TypeCode giá trị 2 = " + f2.GetTypeCode());
Console.WriteLine("Là vô cực? = " + Single.IsInfinity(f2));
Console.WriteLine("Là NaN? = " + Single.IsNaN(f2));
Console.WriteLine("Là vô cực âm? = " + Single.IsNegativeInfinity(f2));
}
}
Kết quả
Giá trị 1 (String) = ∞ Mã băm giá trị 1 = 2139095040 TypeCode giá trị 1 = Single Là vô cực? = True Là NaN? = False Là vô cực âm? = False Giá trị 2 (String) = NaN Mã băm giá trị 2 = -4194304 TypeCode giá trị 2 = Single Là vô cực? = False Là NaN? = True Là vô cực âm? = False
Các định dạng số phổ biến cho float (Standard Numeric Format)
| Định dạng | Ví dụ (123.456f) | Mô tả |
|---|---|---|
\"G\" / mặc định |
123.456 | General, độ chính xác mặc định 7 chữ số |
\"F2\" |
123.46 | Fixed-point, 2 chữ số thập phân |
\"E\" / \"e\" |
1.234560E+002 | Ký pháp khoa học |
\"R\" |
123.456 | Round-trip (giữ đủ độ chính xác để parse ngược) |
\"P\" |
12,345.60% | Phần trăm |
Ví dụ định dạng tùy chỉnh
float f = 123.4567f;
Console.WriteLine(f.ToString("F4")); // 123.4567
Console.WriteLine(f.ToString("E2")); // 1.23E+002
Console.WriteLine(f.ToString("0.00")); // 123.46 (custom)
Console.WriteLine(f.ToString("#.##")); // 123.46
Console.WriteLine(f.ToString("R")); // 123.4567 (round-trip)
Lưu ý
float(Single) có độ chính xác ~7 chữ số thập phân. Dùng\"R\"để round-trip an toàn.- Giá trị đặc biệt:
\"Infinity\",\"-Infinity\",\"NaN\"(không phụ thuộc culture). - Dùng
CultureInfo.InvariantCulturecho format không phụ thuộc locale.