正确的使用方式:
使用字符串调用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.cnblogs.com/cblogs/p/double-precision.html)
安卓开发技术分享: https://blog.csdn.net/yinxing2008/article/details/84555061