用BigDecimal做四舍五入保留小数时要注意一点,参数建议是String类型。double类型存在精度问题的坑!!!下面直接放图看:
这是录入的数据小数点后有7位:
用String类型参数:
//数值保留六位并且四舍五入
cell.setCellStyle(cellStyleDouble);
BigDecimal decimal = new BigDecimal(strVal);
System.out.println("转换后》》》》" +decimal.setScale(6, RoundingMode.HALF_UP).doubleValue());
结果:101.222225
用double类型参数:
//数值保留六位并且四舍五入
cell.setCellStyle(cellStyleDouble);
BigDecimal decimal = new BigDecimal(Double.parseDouble(strVal));
System.out.println("转换后》》》》" +decimal.setScale(6, RoundingMode.HALF_UP).doubleValue());
结果:101.222224
执行同一个函数,但因为类型不一样导致结果不精确!