double 값을 허용하는 BigDecimal 생성자 호출을 보고합니다. 이러한 생성자는 제공된 double 값과 정확히 동일한 BigDecimal을 생성합니다. 하지만 double은 IEEE 754 64비트 배정밀도 2진 부동소수점 형식으로 인코딩되기 때문에 정확한 값은 기대할 수 없습니다.

예를 들어, new BigDecimal(0.1)BigDecimal 객체를 산출합니다. 이 값은 double로 나타낼 수 있는 0.1에 가장 가까운 수인 0.1000000000000000055511151231257827021181583404541015625입니다. 소스 코드에 쓰인 값과 같은 값을 저장하는 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");
    }
  }