BigDecimal添加错误的值

Xtr*_*mer 0 java bigdecimal

我有这样的BigDecimal定义:

private static final BigDecimal sd = new BigDecimal(0.7d);
Run Code Online (Sandbox Code Playgroud)

如果我打印它,我得到的价值:

0.6999999999999999555910790149937383830547332763671875
Run Code Online (Sandbox Code Playgroud)

这会导致一些错误的计算.有谁知道一种方式来获得的精确值0.7作为BigDecimal?将其更改为0.71查看正确的结果,但不应该是这样

Bet*_*ide 8

使用字符串文字:

private static final BigDecimal sd = new BigDecimal("0.7");
Run Code Online (Sandbox Code Playgroud)

如果使用a double,实际上public BigDecimal(double val)是调用的.你没有得到0.7的原因是它不能完全由a表示double.有关更多信息,请参阅链接的JavaDoc.