728x90
나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 예외(ArithmeticException)가 발생한다. 무한대의 값을 정수로 표현할 수 없기 때문이다.
더보기
int x = 5;
int y = 0;
int result = 5 / 0; //예외 발생
하지만 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f이면 예외가 발생하지 않고 연산의 결과는 Infinity(무한대) 또는 NaN(Not a Number)이 된다.
더보기
5 / 0.0 → infinity
5 % 0.0 → NaN
Infinity 또는 NaN 상태에서 계속해서 연산을 수행하면 안된다. 어떤 연산을 하더라도 결과는 계속해서 Infinity와 NaN이 되므로 데이터가 엉망이 될 수 있기 때문이다.
더보기
Infinity + 2 → Infinity
NaN + 2 → NaN
그렇기 때문에 /와 % 연산의 결과가 Infinity 또는 NaN인지 먼저 확인하고 다음 연산을 수행하는 것이 좋다. 확인하기 위해서는 Double.inInfinite()와 Double.isNaN를 사용한다. 이렇게 하면 변수값이 Infinity 또는 NaN일 경우 true를, 그렇지 않다면 false를 산출한다.
더보기
boolean result = Double.isInfinite(변수);
boolean result = Douuble.isNaN(변수);
728x90
'Language > Java' 카테고리의 다른 글
[Java] 연산자(비교 연산자, 논리 연산자, 비트 논리 연산자) (0) | 2022.10.19 |
---|---|
[Java] 정확한 계산 하는 방법 (0) | 2022.10.09 |
[Java] 오버플로우와 언더플로우 (0) | 2022.10.07 |
[Java] 부호/증감/산술 연산자 (0) | 2022.10.06 |
[Java] 키보드 입력 데이터를 변수에 저장 (0) | 2022.10.04 |