1)原代码:
double value = new BigDecimal(88.945).setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(value);
2)控制台输出结果:

3)解决方案:
传给BigDecimal构造器的数值类型转为字符串类型即可。
double value = new BigDecimal("88.945").setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(value);
4)控制台输出结果

ps:与钱相关的数据一般使用此类型存储
本文讨论了在Java中使用BigDecimal进行高精度计算时遇到的问题,特别是当传入浮点数给构造器时可能导致的误差。通过示例代码展示了如何正确地将double类型转换为字符串,以确保BigDecimal的精度。文章强调了在处理与金钱相关数据时使用BigDecimal类型的必要性。
518

被折叠的 条评论
为什么被折叠?



