1、BigDecimal对象不要构造Double类型小数
比如:
BigDecimal num5 = new BigDecimal(2.225667);
//会损失经度,打印结果:2.225667000000000061987748267711140215396881103515625
System.out.println(num5);
应该改为写法:
BigDecimal num5 = new BigDecimal("2.225667");
或者不是double类型的也可以,例如:
BigDecimal num2 = new BigDecimal(2);//这种写法是可以的
2、多个BigDecimal相加减乘除的结果可能出现类似:
100438.137000000000000002
100438.1370000000
这样的结果。
观察过程,比如代码:
BigDecimal num1 = new BigDecimal("54432.30000122");
BigDecimal num2 = new BigDecimal("5.3100440");
BigDecimal result = num1.add(num2);
//结果为54437.61004522
System.out.println(result);
//结果为54437.6100
System.out.println(result.setScale(4,BigDecimal.ROUND_FLOOR));
//结果为54437.61
System.out.println(result.setScale(4,BigDecimal.ROUND_FLOOR).stripTrailingZeros());
//假如位数过多有时间会变为科学计数法,加 toPlainString()则控制不会出现科学计数法
System.out.println(result.setScale(4,BigDecimal.ROUND_FLOOR).stripTrailingZeros().toPlainString());

本文探讨了BigDecimal在Java中处理浮点数时的重要性和正确使用方法,避免精度丢失。文章详细介绍了如何创建BigDecimal对象而不损失精度,以及在进行算术运算时如何设定小数点后位数和舍入方式,确保计算结果的准确性。

779

被折叠的 条评论
为什么被折叠?



