나눗셈 연산에서 예외 방지하기
- 나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 ArithmeticException 발생
- 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f이면 예외가 발생하지 않고 연산의 결과는 Infinity(무한대) 또는 NaN(Not a Number)이 됨
출처, 이것이 자바다
- Infinity 또는 NaN 상태에서 계속해서 연산을 수행하면 안 됨
- Double.isInfinite()와 Double.isNaN()를 사용해 /와 % 연산의 결과가 Infinity 또는 NaN인지 먼저 확인하고 다음 연산을 수행하는 것이 좋음
package ch03.sec05;
public class InfinityAndNaNCheckExample {
public static void main(String[] args) {
//0으로 나누면 예외(Exception)발생 : 런타임 에러
//System.out.println(5/0);
// / 나눗셈
//System.out.println(5/0.0); //Infinity 무한대.
// % 나머지
//System.out.println(5 % 0.0); //NaN(Not a Number)
int x = 5;
double y = 0.0;
double z = x / y; //Infinity
System.out.println("현재 z변수의 상태: " + Double.isFinite(z)); //false
System.out.println(z + 2); //Infinity + 2 = Infinity
//Double.isFinite(z) : z변수의 값이 Infinity인지 확인
//Double.isNaN(z) : z변수의 값이 NaN인지 확인
if(Double.isFinite(z) || Double.isNaN(z)) {
System.out.println("값 산출 불가");
}else {
System.out.println(z + 2);
}
}
}
'자바 언어 기초 - 연산자' 카테고리의 다른 글
논리 연산자 (0) | 2023.01.14 |
---|---|
비교 연산자 (0) | 2023.01.14 |
정확한 계산은 정수 연산으로 (0) | 2023.01.14 |
오버플로우와 언더플로우 (0) | 2023.01.14 |
산술 연산자 (0) | 2023.01.14 |