在使用BigDecimal的时候,构造方法选择的时候优先选择java.math.BigDecimal.BigDecimal(String val)
当使用double作为构造参数的时候,由于我们传入的值无法精确作为一个double类型,所以可能会出现我们不希望的结果,其精度不可控。
如下:
BigDecimal aa = new BigDecimal(1.2);
BigDecimal ab = new BigDecimal(String.valueOf("1.2"));
System.out.println(aa);
System.out.println(ab)
输出结果:
1.1999999999999999555910790149937383830547332763671875
1.2
2、BigDecimal为不可变对象,所以在每次使用BigDecimal的时候都会有可能产生新的对象。
3、因为BigDecimal为不可变对象,所以在使用BigDecimal做数值计算的时候,记得将处理之后的结果赋值给一个新的对象