itajin

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

浮点类数值计算精度都存在问题。。。

分类:

技术点:

相关文章: