C#의 Double.IsNegativeInfinity() 메서드는 지정된 숫자가 음의 무한대(-∞)로 평가되는지 여부를 나타내는 부울 값을 반환합니다. 값이 음의 무한대이면 true, 그렇지 않으면 false를 리턴합니다.
구문
메서드 구문은 다음과 같습니다.
public static bool IsNegativeInfinity(double val);
여기서 val은 검사 대상이 되는 배정밀도(double) 부동 소수점 숫자입니다.
예제 1: NaN 값 검사
먼저 0을 0으로 나눈 결과, 즉 정의되지 않은 값(NaN)에 대해 이 메서드를 호출해 보겠습니다.
using System;
public class Demo {
public static void Main(){
double d = 0.0/0;
Console.WriteLine("Double 값 = "+d);
Console.WriteLine("Double 값의 해시 코드 = "+d.GetHashCode());
TypeCode type = d.GetTypeCode();
Console.WriteLine("Double 값의 TypeCode = "+type);
Console.WriteLine("무한대 여부 = "+Double.IsInfinity(d));
Console.WriteLine("지정된 값이 NaN인지 확인 = "+Double.IsNaN(d));
Console.WriteLine("값이 음의 무한대로 평가되는가? = "+Double.IsNegativeInfinity(d));
}
}
출력
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Double 값 = NaN Double 값의 해시 코드 = -524288 Double 값의 TypeCode = Double 무한대 여부 = False 지정된 값이 NaN인지 확인 = True 값이 음의 무한대로 평가되는가? = False
0.0/0의 결과는 수학적으로 정의되지 않은 값인 NaN(Not a Number)이므로, IsNegativeInfinity() 메서드는 false를 반환합니다.
예제 2: 음의 무한대 값 검사
이번에는 -1.0을 0.0으로 나눈 결과를 확인해 보겠습니다.
using System;
public class Demo {
public static void Main(){
double d = -1.0/0.0;
Console.WriteLine("Double 값 = "+d);
Console.WriteLine("Double 값의 해시 코드 = "+d.GetHashCode());
TypeCode type = d.GetTypeCode();
Console.WriteLine("Double 값의 TypeCode = "+type);
Console.WriteLine("무한대 여부 = "+Double.IsInfinity(d));
Console.WriteLine("지정된 값이 NaN인지 확인 = "+Double.IsNaN(d));
Console.WriteLine("값이 음의 무한대로 평가되는가? = "+Double.IsNegativeInfinity(d));
}
}
출력
실행 결과는 다음과 같습니다.
Double 값 = -∞ Double 값의 해시 코드 = -1048576 Double 값의 TypeCode = Double 무한대 여부 = True 지정된 값이 NaN인지 확인 = False 값이 음의 무한대로 평가되는가? = True
-1.0/0.0의 결과는 음의 무한대이므로, 이번에는 IsNegativeInfinity() 메서드가 true를 반환한 것을 확인할 수 있습니다.
핵심 정리
- IsNegativeInfinity(): 값이 음의 무한대(-∞)일 때만
true를 반환합니다. - IsPositiveInfinity(): 값이 양의 무한대(+∞)일 때만
true를 반환합니다. - IsInfinity(): 값이 양의 무한대 또는 음의 무한대이면
true를 반환합니다. - IsNaN(): 값이 숫자가 아님(NaN)일 때
true를 반환합니다.
참고로 예제에서 함께 사용한 IsInfinity() 메서드는 양의 무한대와 음의 무한대 모두에 대해 true를 반환하기 때문에, 두 번째 예제에서 음의 무한대 값에 대해서도 True가 출력된 것입니다. 특수 부동 소수점 값을 정확히 구분해야 하는 경우라면 용도에 맞는 메서드를 선택하는 것이 중요합니다.