原因:直接将Double类型放在BigDecimal构造函数转换,造成数据变小
Double taxRate = 0.06;
BigDecimal decimal = new BigDecimal(taxRate);
//0.059999999999999997779553950749686919152736663818359375
log.info(decimal.toString());
正确做法:用BigDecimal的静态方法valueOf()进行转换
Double taxRate = 0.06;
BigDecimal taxRateValue = BigDecimal.valueOf(taxRate);
//0.06
log.info(taxRateValue.toString());
本文介绍了在Java中使用BigDecimal处理Double类型数据时的一种常见错误及其正确的解决方案。通过对比直接使用构造函数与使用静态方法valueOf的区别,说明了如何避免数据精度丢失的问题。
968

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



