在Java中舍入BigDecimal不会返回预期的数字

时间:2013-05-09 14:53:42

标签: java bigdecimal

我有一个名为m_FOBST的属性,其中包含以下数字:1.5776。在这里,我试图围绕它:

   this.m_FOBST.setScale(2, BigDecimal.ROUND_HALF_EVEN)

然而,当我得到 1.58 时,我得到的数字 1.60

任何人都可以解释原因吗?

1 个答案:

答案 0 :(得分:4)

BigDecimal是不可变的 - 请确保使用setScale()方法返回的值。

BigDecimal bd = new BigDecimal("1.5776");

bd = bd.setScale(2, BigDecimal.ROUND_HALF_EVEN);

在这种情况下,bd 1.58