Java BigDecimal運算:如何精準控制計算結果精度?
在Java編程中,BigDecimal類常用于高精度計算,但有時計算結果與預期不符。例如:
public static void main(String[] args) { BigDecimal currentInventoryNumber = BigDecimal.valueOf(872.000); BigDecimal convertedNumber = BigDecimal.valueOf(0.200); System.out.println(currentInventoryNumber.subtract(convertedNumber, new MathContext(3))); }
這段代碼輸出872,而非預期的871.800。這是因為MathContext(3)將結果精度限制為3位有效數字,導致小數部分被四舍五入。
MathContext類控制BigDecimal運算的精度和舍入模式。new MathContext(3)指定精度為3,這意味著結果將四舍五入到小數點后三位。 由于871.800的小數點后第三位是0,小于5,所以結果被舍入為872.000,BigDecimal輸出時省略尾部零,最終顯示為872。
立即學習“Java免費學習筆記(深入)”;
要獲得更精確的結果,需調整MathContext參數或直接使用不帶MathContext參數的subtract()方法,保留所有小數位。 這強調了在使用BigDecimal進行計算時,必須謹慎考慮精度和舍入模式對結果的影響。 選擇合適的MathContext或避免使用它,才能確保計算結果的準確性。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END