在构造BigDecimal时,不要直接使用Double或者double进行构建。直接使用Double进行构建会产生数据不正确的问题。
使用String或者BigDecimal.valueOf()
BigDecimal aDouble = new BigDecimal(1.22);
System.out.println(aDouble);
BigDecimal bDouble = new BigDecimal(Double.valueOf(1.22));
System.out.println(bDouble);
BigDecimal aBigdecimal = BigDecimal.valueOf(1.22);
System.out.println(aBigdecimal);
BigDecimal aString = new BigDecimal("1.22");
System.out.println(aString);
结果如下
1.2199999999999999733546474089962430298328399658203125
1.2199999999999999733546474089962430298328399658203125
1.22
1.22