1、情景再现
double oweCost = 0.01;
double parkCost = 0.01;
double totalCost = oweCost + parkCost;
正常情况下:
totalCost = 0.02,但是可能就会出现totalCost = 0.01999999998等等之内的情况,而且还是偶发的,并不是每次都会丢失精度,这可是把我折磨苦了。
2、解决办法
引入Java的BigDecimal类
①先使用 Double.toString() 将需要处理数据做处理;
②创建 BigDecimal 对象,将上面的处理做参数传入;
③然后将 BigDecimal 相加减,bigDecimal.add(),bigDecimal.subtract();
④使用bigDecimal.doubleValue(),将 BigDecimal 类转换成double。
⑤特别需要注意:如何需要累加,需要new 多个BigDecimal 对象,且有一个最开始需要赋值0,不能直接等于0,页不能等于null,而是这样赋值BigDecimal bigDecimal = BigDecimal.ZERO
下面是一个简单的使用示例:
网友评论