NaN && Infinity 이해하기[이것이 자바다]

SUUUI·2025년 4월 5일

java

목록 보기
13/16

NaN과 Infinity

부동소수점 연산 과정에서 특별한 상황이 발생했을 때 나타나는 특수 값

NaN (Not a Number)

NaN은 "숫자가 아님"을 의미하며 다음과 같은 경우에 발생한다:

0을 0으로 나눌 때
ex) 0.0 / 0.0

음수의 제곱근을 구할 때

NaN인 상태로 연산자를 수행할때
NaN + 2

NaN은 어떤 값과 비교해도 항상 false를 반환하고 (자기 자신과도 같지 않음)
NaN인 상태로 연산작업을 수행하면 데이터가 꼬일 수도 있다
그래서 NaN인지 확인하고 연산을 해야한다 이때 사용되는 메서드가 Double.isNaN() 이다.

boolean result = Double.isNaN(변수);

Infinity (무한대)

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(변수);
profile
간단한 개발 기록

0개의 댓글