개발 무지렁이

[Java] int 타입과 double 타입 예외처리와 NaN, Infinity 본문

Backend/자바

[Java] int 타입과 double 타입 예외처리와 NaN, Infinity

Gaejirang-e 2023. 3. 6. 20:06

int 타입일 때, 0으로 나누면 예외처리된다


java.lang.ArithmeticException

public class Divisor0Exception {
    public static void main(String[] args) {
        int a = 3;
        int b = 0;
        System.out.println("a / b = " + a/b);
    }
}

⚠️ double 타입일 때, 0으로 나누면 예외처리되지 않는다


Infinity
NaN(Not a Number)

public class Divisor0Exception {
    public static void main(String[] args) {
        int a = 3;
        double b = 0.0;
        System.out.println("a / b = " + a/b); // a / b = Infinity 
    }
}
public class Divisor0Exception {
    public static void main(String[] args) {
        int a = 3;
        double b = 0.0;
        System.out.println("a % b = " + a % b); // a % b = NaN
    }
}
❗ double로 나눌때나 나눈 나머지를 구할 때는 체크해줘야 한다.
- Double.isInfinite( )
- Double.isNaN( )
public class Divisor0Exception {

    public static void main(String[] args) {
        int a = 3;
        double b = 0.0;

        double share = a / b;
        double rest = a % b;
        if(Double.isInfinite(share)) {
            System.out.println("0으로 나눌 수 없습니다.");
        } else {
            System.out.println("a / b = " + a / b);
        }

        if(Double.isNaN(rest)) {
            System.out.println("0으로 나눈 나머지를 구할 수 없습니다.");
        } else {
            System.out.println("a % b = " + a % b);
        }
    }
}
Comments