
1 |
BigDecimal bdTest = new BigDecimal(1.745); |
运行以上代码可以看到,1.745四舍五入的结果是1.75,0.745四舍五入的结果是0.74。
原因:
使用参数为float或double的BigDecimal创建对象会丢失精度。因此强烈建议不要使用参数为float或double的BigDecimal创建对象。
1 |
System.out.println(new BigDecimal(1.745)); // 1.74500000000000010658141036401502788066864013671875 |
解决办法:
- 使用BigDecimal(String val)的构造方法创建对象
new BigDecimal("1.745");new BigDecimal("0.745"); - 使用使用BigDecimal的valueOf(double val)方法创建对象
BigDecimal.valueOf(1.745);BigDecimal.valueOf(0.745);




近期评论