BigDecimal decimal = new BigDecimal(0.005);
BigDecimal decimal2 = new BigDecimal(0.015);
DecimalFormat df =new DecimalFormat("0.##");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(df.format(decimal.doubleValue()));
System.out.println(df.format(decimal2.doubleValue()));输出的答案都是0.01 为什么,我希望第二个输入的是0.02
4 回答
哔哔one
TA贡献1854条经验 获得超8个赞
如果需要保证精度,最好是不要使用BigDecimal的double参数的构造函数,因为存在损失double参数精度的可能,最好是使用BigDecimal的String参数的构造函数。最好是杜绝使用BigDecimal的double参数的构造函数。
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
new BigDecimal最好用string,你直接写数字的话,结果不是你想要的,
这样:BigDecimal decimal2 = new BigDecimal("0.015");
如果需要保证精度,最好是不要使用BigDecimal的double参数的构造函数,因为存在损失double参数精度的可能,最好是使用BigDecimal的String参数的构造函数。最好是杜绝使用BigDecimal的double参数的构造函数
添加回答
举报
0/150
提交
取消

