เมธอด 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 และการแปลงสตริงเฉพาะตัว (
"∞"หรือ"-∞")