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
반응형
'백엔드' 카테고리의 다른 글
공공데이터포털 30 SERVICE KEY IS NOT REGISTERED ERROR (0) | 2025.01.14 |
---|---|
맥북 터미널 이름 바꾸기 로컬 사용자 이름 호스트 네임 (0) | 2025.01.12 |
Docker 설치하는 방법 공식문서 링크 영어 문서 보는 꿀팁 (1) | 2025.01.08 |
Ubuntu Docker compose 도커컴포즈 설치 이유 설치 방법 (0) | 2024.11.09 |
python 웹 프레임워크로 Fastapi 사용하는 이유 (0) | 2024.08.10 |