백엔드
[Java] java.lang.ArithmeticException: / by zero 에러나는 이유 및 해결 방법
devfrom2ne1
2025. 4. 25. 19:56
728x90
반응형
💥 ArithmeticException 에러나는 이유
- int / int → 0으로 나누면 ArithmeticException
- long 도 int와 마찬가지임
- double / int 또는 double / double → 이때는 0으로 나누면 예외 ❌! → Infinity, NaN 나옴
✅ 왜 이 코드 ↓는 에러 안 나냐면:
double x = (double) (b*f - e*d) / (a*d - b*c);
여기서 (double) (b*f - e*d) 이렇게 앞에 double을 붙이는 순간, 전체 계산은 **실수 나눗셈(double)**이 돼!
그래서 분모가 0이라도 예외가 안 터지고, 아래처럼 값이 나와:
- 0.0 / 0.0 → NaN
- 5.0 / 0.0 → Infinity
- -5.0 / 0.0 → -Infinity
❌ 반면 이건 왜 에러냐?
int x = (b*f - e*d) / (a*d - b*c);
여긴 전부 int 연산이라서, 정수 나눗셈이야.
근데 정수 나눗셈에서 분모가 0이면?
☠️ ArithmeticException: / by zero 터짐
✅ 요약
표현식 결과
int / int | ❌ 분모 0이면 예외 터짐 |
(double)int / int | ✅ 예외 안 남 → Infinity, NaN |
double / double | ✅ 예외 안 남 |
🔧 팁
- 정수 좌표 계산 중이면 무조건 분모 0 체크! (에러 방지)
- 실수 나눗셈은 결과가 Infinity, NaN이 될 수 있으니 그걸 따로 처리해야 함
728x90
반응형