เมธอด Single.ToString() ใน C# ใช้แปลงค่าตัวเลขของ instance float (Single) ให้เป็นการแสดงผลสตริง รองรับค่าพิเศษ เช่น Infinity, NaN ได้อย่างถูกต้อง
รูปแบบไวยากรณ์ (Syntax)
public override string ToString();
มี overload อื่นๆ รองรับ format string และ IFormatProvider เช่นเดียวกับ numeric types อื่น
ตัวอย่างที่ 1: ค่าพิเศษ Positive Infinity และ Negative Number
using System;
public class Demo
{
public static void Main()
{
float f1 = 10.0f / 0.0f; // Positive Infinity
float f2 = -3.0f; // Negative number
Console.WriteLine("Value1 (String representation) = " + f1.ToString());
Console.WriteLine("Hashcode for Value1 = " + f1.GetHashCode());
Console.WriteLine("TypeCode for Value1 = " + f1.GetTypeCode());
Console.WriteLine("Is Value1 infinity? = " + Single.IsInfinity(f1));
Console.WriteLine("Is Value1 NaN? = " + Single.IsNaN(f1));
Console.WriteLine("Is Value1 positive infinity? = " + Single.IsPositiveInfinity(f1));
Console.WriteLine("\nValue2 (String representation) = " + f2.ToString());
Console.WriteLine("Hashcode for Value2 = " + f2.GetHashCode());
Console.WriteLine("TypeCode for Value2 = " + f2.GetTypeCode());
Console.WriteLine("Is Value2 infinity? = " + Single.IsInfinity(f2));
Console.WriteLine("Is Value2 NaN? = " + Single.IsNaN(f2));
Console.WriteLine("Is Value2 positive infinity? = " + Single.IsPositiveInfinity(f2));
}
}
ผลลัพธ์
Value1 (String representation) = ∞ Hashcode for Value1 = 2139095040 TypeCode for Value1 = Single Is Value1 value is positive or negative infinity? = True Is Value1 NaN? = False Is Value1 a positive infinity? = True Value2 (String representation) = -3 Hashcode for Value2 = -1069547520 TypeCode for Value2 = Single Is Value2 value is positive or negative infinity? = False Is Value2 NaN? = False Is Value2 a positive infinity? = False
ตัวอย่างที่ 2: Positive Infinity, NaN และ Negative Infinity
using System;
public class Demo
{
public static void Main()
{
float f1 = 5.0f / 0.0f; // Positive Infinity
float f2 = 0.0f / 0.0f; // NaN
Console.WriteLine("Value1 (String representation) = " + f1.ToString());
Console.WriteLine("Hashcode for Value1 = " + f1.GetHashCode());
Console.WriteLine("TypeCode for Value1 = " + f1.GetTypeCode());
Console.WriteLine("Is Value1 infinity? = " + Single.IsInfinity(f1));
Console.WriteLine("Is Value1 NaN? = " + Single.IsNaN(f1));
Console.WriteLine("Is Value1 negative infinity? = " + Single.IsNegativeInfinity(f1));
Console.WriteLine("\nValue2 (String representation) = " + f2.ToString());
Console.WriteLine("Hashcode for Value2 = " + f2.GetHashCode());
Console.WriteLine("TypeCode for Value2 = " + f2.GetTypeCode());
Console.WriteLine("Is Value2 infinity? = " + Single.IsInfinity(f2));
Console.WriteLine("Is Value2 NaN? = " + Single.IsNaN(f2));
Console.WriteLine("Is Value2 negative infinity? = " + Single.IsNegativeInfinity(f2));
}
}
ผลลัพธ์
Value1 (String representation) = ∞ Hashcode for Value1 = 2139095040 TypeCode for Value1 = Single Is Value1 value is positive or negative infinity? = True Is Value1 NaN? = False Is Value1 a negative infinity? = False Value2 (String representation) = NaN Hashcode for Value2 = -4194304 TypeCode for Value2 = Single Is Value2 value is positive or negative infinity? = False Is Value2 NaN? = True Is Value2 a negative infinity? = False
สรุปค่าพิเศษของ Single (float)
| ค่า | ToString() | IsInfinity | IsPositiveInfinity | IsNegativeInfinity | IsNaN |
|---|---|---|---|---|---|
| 1.0f/0.0f | "∞" | True | True | False | False |
| -1.0f/0.0f | "-∞" | True | False | True | False |
| 0.0f/0.0f | "NaN" | False | False | False | True |
| float.MaxValue | "3.402823E+38" | False | False | False | False |
สรุป
- ToString() แสดง "∞", "-∞", "NaN" สำหรับค่าพิเศษ
- ใช้ IsInfinity(), IsNaN() ตรวจสอบก่อนคำนวณต่อ
- มี overload ToString(format) และ ToString(format, provider) สำหรับจัดรูปแบบ
- HashCode ของ Infinity และ NaN เป็นค่าคงที่เฉพาะตัว