2011-12-26 4 views
0

자바에서 소수점 이하 두 자리를 두배로 지정하려고합니다.자바에서 소수점 이하 자릿수 서식 지정

내가 읽은 후 다음 : 어떤 이유 How to round a number to n decimal places in Java

, 그 방법 중 하나 하나가 내가 가지고있는 특정 번호에서 작동 할 수 없습니다 ..

예를 들어

:

DecimalFormat df = new DecimalFormat("#.##"); 
normalizedValue = Double.valueOf(df.format(normalizedValue)); 

normalizedValue을 인쇄하면 다음과 비슷한 결과가 나옵니다.

-78.64000000000001 

18.97 

59.469999999999985 

-63.120000000000005 

(참고 : 일부는 일부는하지 않습니다 ... 올바른 형식)

따라서, 이러한 방법은 반올림 것 같다,하지만 난 2 소수점 ... 어떤 제안 후 모든 소수를 제거 할 뭔가가 필요?

감사합니다.

답변

5

DecimalFormat.format(...)에 의해 주어진 문자열 표현은 실제로 예제에서 2 자릿수입니다. 그러나 이것을 double로 변환하면 정확성 문제가 발생합니다. double 같은 이진 기본 형식은 "exakt"소수를 표현하려고 할 때 항상 이러한 효과를 나타냅니다. 이러한 효과를 없애려면 BigDecimal으로 변경하십시오.

관련 문제