Double数据运算过程中精度调整
Double数据进行运算时,容易出现多位小数的精度问题
①问题现象

②解决方案
- 使用BigDecimal类型来进行Double类型数据运算
- 创建BigDecimal类型对象时将Double类型的数据转换为字符串
//Cart类: // 计算总金额 public Double getTotalAmount() { // 1.声明一个变量用于存储累加结果 BigDecimal sum = new BigDecimal("0.0"); // 2.遍历Map集合 Set<String> keySet = cartItemMap.keySet(); for (String key : keySet) { CartItem cartItem = cartItemMap.get(key); Double amount = cartItem.getAmount(); sum = sum.add(new BigDecimal(amount + "")); } // 3.返回累加结果 return sum.doubleValue(); }
//CartItem类: // 获取金额时需要计算得到 public Double getAmount() { BigDecimal bigDecimalCount = new BigDecimal(this.count + ""); BigDecimal bigDecimalPrice = new BigDecimal(this.price + ""); BigDecimal multiReuslt = bigDecimalCount.multiply(bigDecimalPrice); return multiReuslt.doubleValue(); }
浙公网安备 33010602011771号