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