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

เมธอด Single.IsInfinity() ใน C# : ตรวจสอบค่าอันันต์ของ float

เมธอด Single.IsInfinity() ใน C# ใช้ตรวจสอบว่าค่า float (Single precision) ที่ระบุประเมินผลเป็น บวกอันันต์ (Positive Infinity) หรือ ลบอันันต์ (Negative Infinity) คืนค่า true หากเป็นอันันต์ (ทั้งบวกและลบ) มิฉะนั้นคืน false

รูปแบบไวยากรณ์ (Syntax)

public static bool IsInfinity(float val);

val : ค่าทศนิยม single-precision ที่ต้องการตรวจสอบ

ตัวอย่างที่ 1: ตรวจสอบค่าปกติและ MaxValue

using System;

public class Demo
{
    public static void Main()
    {
        float f1 = 19.3f;
        float f2 = Single.MaxValue; // ~3.402823E+38 (ค่าสูงสุดที่เก็บได้ ไม่ใช่ infinity)
        
        Console.WriteLine("Value1 = " + f1);
        Console.WriteLine("Hashcode for Value1 = " + f1.GetHashCode());
        Console.WriteLine("TypeCode for Value1 = " + f1.GetTypeCode());
        Console.WriteLine("Is Value1 positive or negative infinity? = " + Single.IsInfinity(f1));
        
        Console.WriteLine("\nValue2 = " + f2);
        Console.WriteLine("Hashcode for Value2 = " + f2.GetHashCode());
        Console.WriteLine("TypeCode for Value2 = " + f2.GetTypeCode());
        Console.WriteLine("Is Value2 positive or negative infinity? = " + Single.IsInfinity(f2));
    }
}

ผลลัพธ์

Value1 = 19.3
Hashcode for Value1 = 1100637798
TypeCode for Value1 = Single
Is Value1 value is positive or negative infinity? = False

Value2 = 3.402823E+38
Hashcode for Value2 = 2139095039
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False

ตัวอย่างที่ 2: ตรวจสอบค่าอันันต์จริง

using System;

public class Demo
{
    public static void Main()
    {
        float f1 = 5.0f / 0.0f;       // Positive Infinity
        float f2 = Single.MinValue;   // -3.402823E+38 (ค่าต่ำสุดที่เก็บได้ ไม่ใช่ infinity)
        
        Console.WriteLine("Value1 = " + f1);
        Console.WriteLine("Hashcode for Value1 = " + f1.GetHashCode());
        Console.WriteLine("TypeCode for Value1 = " + f1.GetTypeCode());
        Console.WriteLine("Is Value1 positive or negative infinity? = " + Single.IsInfinity(f1));
        
        Console.WriteLine("\nValue2 = " + f2);
        Console.WriteLine("Hashcode for Value2 = " + f2.GetHashCode());
        Console.WriteLine("TypeCode for Value2 = " + f2.GetTypeCode());
        Console.WriteLine("Is Value2 positive or negative infinity? = " + Single.IsInfinity(f2));
    }
}

ผลลัพธ์

Value1 = ∞
Hashcode for Value1 = 2139095040
TypeCode for Value1 = Single
Is Value1 value is positive or negative infinity? = True

Value2 = -3.402823E+38
Hashcode for Value2 = -8388609
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False

เมธอดเกี่ยวข้องสำหรับ float (Single)

เมธอด วัตถุประสงค์
Single.IsInfinity(f) ตรวจสอบอันันต์ (บวกหรือลบ)
Single.IsPositiveInfinity(f) ตรวจสอบเฉพาะบวกอันันต์
Single.IsNegativeInfinity(f) ตรวจสอบเฉพาะลบอันันต์
Single.IsNaN(f) ตรวจสอบ Not a Number (0.0f/0.0f)

สรุป

  • การหาร float ด้วยศูนย์ (5.0f/0.0f) จะได้ Infinity ไม่ใช่ exception
  • Single.MaxValue และ Single.MinValue เป็นค่าสูงสุด/ต่ำสุดที่เก็บได้ ไม่ใช่ Infinity
  • ใช้ IsIninity() ตรวจสอบก่อนคำนวณต่อ เพื่อป้องกันการแพร่กระจายของ Infinity
  • ค่า Infinity มี HashCode และการแปลงสตริงเฉพาะตัว ("∞" หรือ "-∞")