부동소수점 연산 과정에서 특별한 상황이 발생했을 때 나타나는 특수 값
NaN은 "숫자가 아님"을 의미하며 다음과 같은 경우에 발생한다:
0을 0으로 나눌 때
ex) 0.0 / 0.0
음수의 제곱근을 구할 때
NaN인 상태로 연산자를 수행할때
NaN + 2
NaN은 어떤 값과 비교해도 항상 false를 반환하고 (자기 자신과도 같지 않음)
NaN인 상태로 연산작업을 수행하면 데이터가 꼬일 수도 있다
그래서 NaN인지 확인하고 연산을 해야한다 이때 사용되는 메서드가 Double.isNaN() 이다.
boolean result = Double.isNaN(변수);
Infinity는 컴퓨터가 표현할 수 있는 범위를 벗어난 매우 큰 수를 의미한다
0으로 나눌 때 (0.0이 아닌 숫자를 0.0으로 나눔):
int a =5;
double d =0.0;
double result = a/d; // POSITIVE_INFINITY
매우 큰 수의 결과값:
double largeNumber = Double.MAX_VALUE * 2; // INFINITY
음수를 0으로 나눌 때:
java복사double negativeInfinity = -1.0 / 0.0; // NEGATIVE_INFINITY
Infinity도 NaN과 마찬가지로 확인하는 메서드를 먼저 사용한 뒤에 연산자를 수행하는것이 좋다
boolean result = Double.isInfinity(변수);