C#의 Single.IsPositiveInfinity() 메서드는 지정된 숫자가 양의 무한대(positive infinity)로 평가되는지 여부를 나타내는 값을 반환합니다. 부동 소수점 연산 중 0으로 나누기 등으로 인해 발생하는 무한대 값을 확인할 때 유용하게 사용됩니다.
문법(Syntax)
이 메서드의 기본 문법은 다음과 같습니다.
public static bool IsPositiveInfinity (float val);
여기서 매개변수 val은 단정밀도(single-precision) 부동 소수점 숫자를 의미합니다. 값이 양의 무한대이면 true, 그렇지 않으면 false를 반환합니다.
예제 1
음의 무한대와 양의 무한대 값을 비교하는 첫 번째 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
float f1 = -25.0f/0.0f;
float f2 = 5.0f/0.0f;
Console.WriteLine("Value1 = "+f1);
Console.WriteLine("Hashcode for Value1 = "+f1.GetHashCode());
Console.WriteLine("TypeCode for Value1 = "+f1.GetTypeCode());
Console.WriteLine("Is Value1 value is positive or negative infinity? = "+Single.IsInfinity(f1));
Console.WriteLine("Is Value1 NaN? = "+Single.IsNaN(f1));
Console.WriteLine("Is Value1 a 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 value is positive or negative infinity? = "+Single.IsInfinity(f2));
Console.WriteLine("Is Value2 NaN? = "+Single.IsNaN(f2));
Console.WriteLine("Is Value2 a positive infinity? = "+Single.IsPositiveInfinity(f2));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Value1 = -∞ Hashcode for Value1 = -8388608 TypeCode for Value1 = Single Is Value1 value is positive or negative infinity? = True Is Value1 NaN? = False Is Value1 a positive infinity? = False Value2 = ∞ Hashcode for Value2 = 2139095040 TypeCode for Value2 = Single Is Value2 value is positive or negative infinity? = True Is Value2 NaN? = False Is Value2 a positive infinity? = True
첫 번째 예제에서 -25.0f/0.0f는 음의 무한대(-∞)가 되므로 IsPositiveInfinity()는 False를 반환하고, 5.0f/0.0f는 양의 무한대(+∞)가 되어 True를 반환합니다.
예제 2
이번에는 양의 무한대와 일반적인 음수 값을 함께 확인해 보겠습니다.
using System;
public class Demo {
public static void Main() {
float f1 = 10.0f/0.0f;
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 value is positive or negative infinity? = "+Single.IsInfinity(f1));
Console.WriteLine("Is Value1 NaN? = "+Single.IsNaN(f1));
Console.WriteLine("Is Value1 a 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 value is positive or negative infinity? = "+Single.IsInfinity(f2));
Console.WriteLine("Is Value2 NaN? = "+Single.IsNaN(f2));
Console.WriteLine("Is Value2 a positive infinity? = "+Single.IsPositiveInfinity(f2));
}
}출력 결과
실행 결과는 다음과 같습니다.
Value1 = ∞ 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 = -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
핵심 정리
- Single.IsPositiveInfinity(): 값이 정확히 양의 무한대(+∞)일 때만 true 반환
- Single.IsInfinity(): 양의 무한대 또는 음의 무한대 모두 true 반환
- Single.IsNaN(): 값이 NaN(Not a Number)인 경우에만 true 반환
즉, 일반적인 유한 숫자나 음의 무한대는 IsPositiveInfinity()에서 false를 반환하며, 이 메서드는 오직 양의 무한대 값만을 판별한다는 점을 기억하시기 바랍니다.