double 値を受け付ける BigDecimal コンストラクターへの呼び出しを報告します。 このようなコンストラクターは、与えられた double 値と正確に等しい BigDecimal を生成します。 ただし、double は IEEE 754 64 ビット倍精度バイナリ浮動小数点形式でエンコードされているため、正確な値を期待できない場合があります。

たとえば、new BigDecimal(0.1)BigDecimal オブジェクトを生成します。 その値は 0.1000000000000000055511151231257827021181583404541015625 であり、これは double で表現可能な 0.1 に最も近い数値です。 ソースコードの記述と同じ値を格納する 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");
    }
  }