金额计算相关的,很多用的就是bigdecimal吧,很多java的开发人员,在金额计算过程中,为了不失去精度,导致金额计算错误,通常都会使用这个属性,但是在使用的过程中,我发现了一个精度丢失的问题,在此记录一下
首先我们先看看具体问题复现:
public static void main(String[] args) { BigDecimal bigDecimal=new BigDecimal(88); System.out.println(bigDecimal); bigDecimal=new BigDecimal("8.8"); System.out.println(bigDecimal); bigDecimal=new BigDecimal(8.8); System.out.println(bigDecimal); }
执行结果是这样的:
可以看到最后的bigdecimal(8.8)的结果是超出了8.8的范围,那在实际的计算过程中,肯定就会导致金额变大,数据不准确了
BigDecimal 在处理的时候把十进制小数扩大 N 倍让它在整数上进行计算,并保留相应的精度信息。
①flo