DigDecimal 注意点
- digdecimal是类String 不可更改(immutable),操作会生成新的对象,所以对象指向新的值
BigDecimal a=new BigDecimal("10.1");
BigDecimal b=new BigDecimal("2.3");
a.add(b);
system.out.print(a);//10.1
a=a.add(b);
system.out.print(a);//12.4
- BigDecimal 运算要注意小数位是否有限,过长需要精确位数否者会报错 Non-terminating decimal expansion; no exact representable decimal result.
a.divide(b,1);//精确到1位
a.divide(b,RoundingMode.HALF_UP);//四舍五入
- BigDecimal 初始化可使用double或者String,但是要使用String因为会出现精度问题
BigDecimal b1=new BigDecimal(2.3);
a1=a1.multiply(b1);
System.out.println(a1);//23.229999999999998205879592205747030675411224365234375
浮点类数值计算精度都存在问题。。。