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
반응형

+ Recent posts