[Java] BigDecimal 사용 시 ArithmeticException 발생하는 경우

NCOOKIE·2025년 2월 27일
0

TIL

목록 보기
7/20

BigDecimal 연산 중 ArithmeticException가 발생하는 경우는 크게 3개가 있다.

오류

/ by zero (0으로 나누기 오류)

피제수(어떤 수를 나누는 수)가 0일 때 에러가 발생한다.

Non-terminating decimal expansion; no exact representable decimal result

RoundingMode 파라미터가 설정되지 않은 상태에서 divide(...) 연산 결과가 무한소수일 때 발생

Rounding necessary

RoundingModeUNNECESSARY인데 divide(...) 연산 결과가 무한소수일 때 발생

해결방법

두 번째와 세 번째 같은 경우에는 RoudingMode만 잘 설정해주면 문제 없다. 아래 옵션 중 원하는 방식을 사용하면 될 것 같다.

ex)

a.divide(b, 10, RoundingMode.HALF_EVEN)		// 소수점 10의 자리까지 표시

따라서 대부분의 문제는 첫 번째 경우에 발생한다. 피제수로 0이 들어왔을 때 따로 처리를 해주거나, try-catch에서 ArithmeticException를 핸들링 해주면 된다.

참고

profile
일단 해보자

0개의 댓글