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());