报告对接受 double 值的 BigDecimal 构造函数的调用。 这些构造函数生成正好等于所提供的 double 值的 BigDecimal

但是,由于 double 是以 IEEE 754 64 位双精度二进制浮点格式进行编码,因此确切的值可能出乎意料。

例如,new BigDecimal(0.1) 生成一个 BigDecimal 对象。 它的值为 0.1000000000000000055511151231257827021181583404541015625,这是最接近 0.1 的数字,可以表示为 double。 要获取存储的值与源代码中编写的值相同的 BigDecimal,请使用 new BigDecimal("0.1")BigDecimal.valueOf(0.1)

示例:


  class Constructor {
    void foo() {
      new BigDecimal(0.1);
    }
  }

在应用快速修复后:


  class Constructor {
    void foo() {
      new BigDecimal("0.1");
    }
  }