正确的使用方式:
使用字符串调用BigDecimal构造函数或者采用valueOf,但是不要直接将数字作为构造函数参数。
BigDecimal correctWay1 = new BigDecimal("0.1");
BigDecimal correctWay2 = BigDecimal.valueOf(0.1);
错误的使用方式
BigDecimal wrongWay = new BigDecimal(0.1);
原因:采用上述构造方式,0.1是当成double传入的,double做科学计算的时候精度是有问题的,详见:https://www.cnblogs.com/cblogs/p/double-precision.html
两种方式使用对比图
参考
【超详细】解释BigDecimal精度的坑
java中double和float精度丢失问题及解决方法
安卓开发技术分享: https://www.jianshu.com/p/442339952f26
网友评论