我们都知道BigDecimal可以精确计算避免精度损失,这里记录一下BigDecima出现精度损失的情况,

使用BigDecimal(Double value)构造BigDecimal对象时,

因为double本身就无法精确的表示某些小数,

导致其传入的本就不是一个准确的数,

所以构造方法也没办法把你构造一个准确表示该浮点数的BigDecimal对象.

并不是BigDecimal丢失精度,而是本身就有可能在构造时传入一个无法确定表示的浮点数。

在使用BigDecimal时,建议使用new BigDecimal(String value)或者

new BigDecimal.valueOf(Double value)来构造BigDecimal对象。

习惯这样用

BigDecimal all = new BigDecimal(tryOutNumByRegion+"");