new BigDecimal(“0.00“)与new BigDecimal(0.00)的区别

首先看几个例子
eg1.

 		BigDecimal a = new BigDecimal("0.08");
        System.out.println(a.setScale(2, RoundingMode.UP)); //输出0.08
        BigDecimal b = new BigDecimal(0.08);
        System.out.println(b.setScale(2, RoundingMode.UP));  //输出0.09

eg2.

		BigDecimal a = new BigDecimal("0.00");
        BigDecimal b = new BigDecimal(0.00);
        System.out.println(a.equals(BigDecimal.ZERO));  //false
        System.out.println(b.equals(BigDecimal.ZERO));   // 输出true

new BigDecimal("0.00")new BigDecimal(0.00) 调用的构造函数是不一样的

new BigDecimal("0.00")调用的构造函数

   public BigDecimal(String val) {
        this(val.toCharArray(), 0, val.length());
    }

new BigDecimal(0.00)调用的构造函数

  public BigDecimal(double val) {
        this(val,MathContext.UNLIMITED);
    }

官方说明

new BigDecimal(“0.00“)与new BigDecimal(0.00)的区别
官方建议

  1. 使用BigDecimal(String val)构造方法,此构造方法可预知,BigDeciaml(double val)构造方法不可预知
  2. 若一定要使用BigDecimal(double vale)构造方法,它提供了一个准确转换
  1. 先使用Double.toString(double) 方法
  2. 然后使用BigDecimal(String)构造方法,将double转换为String
    要获取该结果,请使用static valueOf(double)方法
上一篇:BigDecimal取整数


下一篇:poi处理Excel数据