Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Single.ToString() ใน C# : แปลง Float เป็นสตริง พร้อมค่าพิเศษ

เมธอด 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 เป็นค่าคงที่เฉพาะตัว