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