我想用scale = 3和HALF_UP舍入模式來舍入0.14049,並希望看到舍入值= 0.141,但取而代之的是0.140。BigDecimal HALF_UP舍入問題
根據我的理解,最後一位十進制數字9應該四捨五入,當使用比例尺3時應該輪到0到1,我應該看到0.141。
是BigDecimal setScale方法中的錯誤還是我對舍入的期望是錯誤的。我怎樣才能得到類似於0.141而不是0.140的四捨五入值?
BigDecimal bd=new BigDecimal("0.14049");
BigDecimal normalizedField = field.setScale(3, RoundingMode.HALF_UP);
System.out.println(normalizedField);
// Output = 0.140
對於HALF_UP生效,您的值至少需要0.1405 – Reimeus
1.14049比1.141更接近1.140。你爲什麼期望四捨五入把你帶到更遠的價值?你的期望是錯誤的,而不是BigDecimal。 –
感謝這個例子,我被代碼庫中的一些現有實現誤導了。 –