IT/Java
[Java] 나눗셈 연산 후 NaN과 Infinity
Huitopia
2024. 2. 21. 09:52
728x90
나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 예외(ArithmeticException)가 발생하며, 그 이유는 무한대의 값을 정수로 표현할 수 없기 때문이다.
예제 코드
public class InfinityAndNanCheckExample {
public static void main(String[] args) {
int x = 5;
int y = 0;
int result = x / y;
System.out.println(result);
}
}
출력 결과
그러나 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f이면 예외가 발생하지 않고 연산의 결과는 Infinity(무한대) 또는 NaN(Not a Number)이 된다.
예제 코드
public static void main(String[] args) {
int x = 5;
double y = 0.0;
double result = x / y;
System.out.println("result : " + result);
}
출력 결과
출력이 된다는 이유로 Infinity 또는 NaN 상태에서 계속 연산을 수행하면 어떤 연산을 하더라도 결과는 계속 같기때문에 데이터가 엉망이 될 수 있다.
그래서 /와 %연산의 결과가 Infinity와 NaN인지 확인 후 다음 연산을 수행하는 것이 좋다.
Double.inInfinite() / Double.isNaN()
연산 결과가 Infitiny 또는 NaN인지 확인할 때 사용한다. 사용시 변수값이 Infinity 또는 NaN인 경우 true를 아니면 false를 산출한다.
boolean result = Double.isInfinite(변수);
boolean result = Double.isNuN(변수);
728x90