>Java >java지도 시간 >MathContext 없이 BigDecimal을 나누면 '종료되지 않는 소수 확장' 예외가 발생하는 이유는 무엇입니까?

MathContext 없이 BigDecimal을 나누면 '종료되지 않는 소수 확장' 예외가 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-15 09:58:02409검색

Why Does Dividing BigDecimals Without a MathContext Result in a

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.