เมธอด Single.IsPositiveInfinity() ใน C# ใช้สำหรับตรวจสอบว่าค่าที่ระบุเป็นบวกอนันต์ (positive infinity) หรือไม่ โดยคืนค่า true หากเป็นบวกอนันต์ มิฉะนั้นคืนค่า false
ไวยากรณ์ (Syntax)
public static bool IsPositiveInfinity (float val);
พารามิเตอร์ val คือตัวเลขทศนิยมความแม่นยำเดี่ยว (single-precision floating-point number) ที่ต้องการตรวจสอบ
ตัวอย่างที่ 1: เปรียบเทียบลบอนันต์และบวกอนันต์
using System;
public class Demo
{
public static void Main()
{
float f1 = -25.0f / 0.0f; // -Infinity
float f2 = 5.0f / 0.0f; // +Infinity
Console.WriteLine("Value1 = " + f1);
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 = " + f2);
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 = -∞ Hashcode for Value1 = -8388608 TypeCode for Value1 = Single Is Value1 infinity? = True Is Value1 NaN? = False Is Value1 positive infinity? = False Value2 = ∞ Hashcode for Value2 = 2139095040 TypeCode for Value2 = Single Is Value2 infinity? = True Is Value2 NaN? = False Is Value2 positive infinity? = True
ตัวอย่างที่ 2: บวกอนันต์และค่าลบปกติ
using System;
public class Demo
{
public static void Main()
{
float f1 = 10.0f / 0.0f; // +Infinity
float f2 = -3.0f; // ค่าลบปกติ
Console.WriteLine("Value1 = " + f1);
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 = " + f2);
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 = ∞ Hashcode for Value1 = 2139095040 TypeCode for Value1 = Single Is Value1 infinity? = True Is Value1 NaN? = False Is Value1 positive infinity? = True Value2 = -3 Hashcode for Value2 = -1069547520 TypeCode for Value2 = Single Is Value2 infinity? = False Is Value2 NaN? = False Is Value2 positive infinity? = False
ตารางสรุปเมธอดตรวจสอบค่า float พิเศษ
| ค่า | IsInfinity() | IsPositiveInfinity() | IsNegativeInfinity() | IsNaN() |
|---|---|---|---|---|
| +Infinity (1.0/0.0) | True | True | False | False |
| -Infinity (-1.0/0.0) | True | False | True | False |
| NaN (0.0/0.0) | False | False | False | True |
| ค่าปกติ (เช่น -3.0, 45.5) | False | False | False | False |
ข้อสังเกต
- บวกอนันต์เกิดจากการหารเลขบวกด้วยศูนย์ หรือเกิน
Single.MaxValue - ลบอนันต์เกิดจากการหารเลขลบด้วยศูนย์ หรือต่ำกว่า
Single.MinValue - เมธอดทั้งหมดเป็น static — เรียกผ่าน
Singleหรือfloatได้ - ใช้ร่วมกับ
float.IsInfinity()เพื่อตรวจสอบอนันต์ทุกประเภทก่อน ตามด้วย IsPositive/IsNegative