BigDecimal 나눗셈에서 종료되지 않는 소수 확장 방지
Java의 BigDecimal 클래스는 고정밀 수학 연산을 용이하게 하도록 설계되었지만 때로는 "ArithmeticException: 비종료 소수점 확장, 정확하게 표현할 수 있는 소수점 결과 없음" 오류가 발생합니다. 이 예외는 두 개의 BigDecimal 객체를 나눌 때 발생하며 몫은 무한한 소수 확장을 갖습니다.
예외 이유
BigDecimal 문서에 따르면 MathContext 객체( 정밀도 및 반올림 모드 지정)이 제공되면 산술 연산이 정확하게 수행됩니다. 몫에 끝이 없는 소수 확장이 있고 정확하게 표현할 수 없는 경우 예외가 발생합니다.
예
BigDecimal a = new BigDecimal("1.6"); BigDecimal b = new BigDecimal("9.2"); a.divide(b) // raises the ArithmeticException
수정
문제를 해결하려면 0이 아닌 정밀도와 반올림 모드를 사용하여 MathContext 객체를 지정할 수 있습니다. 예:
a.divide(b, 2, RoundingMode.HALF_UP)
여기서 2는 소수 자릿수를 지정하고 RoundingMode.HALF_UP은 반올림 방법을 나타냅니다.
추가 정보
위 내용은 BigDecimal Division에서 'ArithmeticException: 비종료 소수점 확장'을 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!