0

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL64).doubleValue());

结果=63.23499999999999

但是随着MathContext.DECIMAL32我们得到正确的结果,请参见下文:

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL32).doubleValue());

结果=63.235

4

1 回答 1

1

这里的问题不是BigDecimal,而是事实(63.19* 15) + (63.37* 5)不是1264.7but 1264.6999999999998,因为前者不能表示为a double

如果你这样做

new BigDecimal("1264.7").divide(new BigDecimal("20"), MathContext.DECIMAL64)

相反,你会得到想要的结果。

于 2015-05-06T17:27:01.953 回答