避免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
修補
要解決此問題,您可以指定一個具有非零精度和捨入的MathContext 物件模式。例如:
a.divide(b, 2, RoundingMode.HALF_UP)
這裡,2 指定比例(小數位數),RoundingMode.HALF_UP 表示舍入方法。
其他資訊
以上是如何避免 BigDecimal 除法中的「ArithmeticException:非終止十進位擴充」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!