2015-02-06 2 views
-1

DecimalFormat 숫자가 일치하지 않는 것으로 보입니다.Java DecimalFormat 반올림 오류?

new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.US)).format(number)

는 여기에 몇 가지 다른 number 값을 반환 무슨이다.

  • 복귀 0.05 0.0 0.15
  • 되돌아 0.2
  • 복귀 0.25 0.2 0.35
  • 되돌아 0.4
  • 0.45 복귀

왜 일어나지 않는 0.4? 그리고 더 중요한 것은 어떻게 올바른 값을 얻을 수 있습니까 (0.45를 반올림 할 때 0.25를 반올림 할 때 0.3).

+0

2 downvotes 질문에 대한 stackoverflow. 차가운 – Michael

답변

3

Javadoc의 상태 :

에 DecimalFormat가 서식되는 RoundingMode에 정의 된 반올림 모드를 제공합니다. 기본적으로 RoundingMode.HALF_EVEN을 사용합니다.

HALF_EVEN 당신이 정확히 알아 차린 것입니다. 정확하게 두 숫자 사이의 중간에 가장 가까운 짝수로 반올림하는 것을 선호합니다. (이것은 여러 가지 이유로 유용합니다. 주로 반올림 오류의 균형을 조정하기 때문에 평균적으로 위아래로 편향하지 않기 때문입니다.)

설명하는 동작에 대해 setRoundingMode(RoundingMode.HALF_UP)이라고 부르기 만하면됩니다.

+0

좋은 답변, 미만 2 분 :) –