BigDecimal 분할 시 종료되지 않는 Decimal 확장 예외
MathContext를 지정하지 않고 두 개의 BigDecimal 개체를 나누는 경우 작업으로 인해 다음이 발생할 수 있습니다. "ArithmeticException: 끝이 없는 십진수 확장; 정확하게 표현할 수 있는 십진수 결과가 없습니다." 예외.
이는 특정 나눗셈(예: 1을 3으로 나눈 것)의 몫이 무한히 긴 십진수 확장을 갖기 때문입니다. 정밀도가 0(기본값)으로 설정되면 정확한 결과를 계산해야 합니다. 몫에 종료되지 않는 확장이 있는 경우 예외가 발생합니다.
해결 방법
이 문제를 해결하려면 특정 배율 및 반올림 모드가 있는 MathContext를 제공해야 합니다. . 다음 코드는 이를 보여줍니다.
a.divide(b, 2, RoundingMode.HALF_UP)
이 예에서 배율은 2로 설정되고 반올림 모드는 RoundingMode.HALF_UP으로 설정됩니다. 이렇게 하면 나누기 결과가 특정 규모로 반올림되고 예외가 방지됩니다.
자세한 내용은 Java 11 BigDecimal 설명서나 이 블로그 게시물과 같은 외부 리소스를 참조하세요.
위 내용은 MathContext 없이 BigDecimal을 나누면 '종료되지 않는 소수 확장' 예외가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!