首頁 > Java > java教程 > 主體

為什麼 Java 的 BigDecimal 會針對非終止十進位擴充拋出 ArithmeticException?

Mary-Kate Olsen
發布: 2024-11-15 10:11:02
原創
804 人瀏覽過

Why Does Java's BigDecimal Throw an ArithmeticException for Non-Terminating Decimal Expansions?

由於非終止十進位擴展導致的ArithmeticException

使用Java 的BigDecimal 類別執行除法運算時,可能會遇到以下異常:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
登入後複製

當除法運算產生具有無限長擴展的小數商時,會發生此錯誤。預設情況下,BigDecimal 運算是精確的,這意味著它們會產生精確的數學結果,而無需捨入。

但是,當結果具有非終止十進位擴展並且需要精確結果時(即,divide 方法會拋出 ArithmeticException)。 ,當使用的 MathContext 物件的精確度設定為 0 時)。

要解決此問題,您可以為 MathContext 指定非零精度設定 目的。這將強制結果四捨五入到指定的小數位數:
a.divide(b, 2, RoundingMode.HALF_UP)
登入後複製

在本例中,2 是比例(小數位數),RoundingMode.HALF_UP 是要使用的捨入模式。透過指定精度,可以獲得有限且可表示的小數結果。

以上是為什麼 Java 的 BigDecimal 會針對非終止十進位擴充拋出 ArithmeticException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板