2009-04-29 2 views
0

DecimalFormat 구문은 Double.toString() 표현 (과학 및 재무 형식 일 수 있음)입니다.DecimalFormat 및 double

왜 Sun이 double을 String으로 직접 변환하는 대신이 방법을 선택 했습니까?

추 신 : 구체적으로 말하십시오. Double 자체의 내부 표현을 포맷하는 대신 Double 형식을 사용하기 위해 DecimalFormat이 내부적으로 Double.toString()을 사용하는 이유는 무엇입니까?

+0

"직접 변환"이란 무엇을 의미합니까? – Eddie

+0

당신이 무엇을 요구하고 있는지 명확히 할 수 있습니까? 나는 당신이 "double을 String으로 직접 변환"한다는 것을 모른다. OpenJDK에서 Double.toString()은 String.valueOf (value)를 반환하며, value는 프리미티브 double입니다. 그 결과, 새로운 FloatingDecimal (d) .toJavaFormatString()을 호출하는 Double.toString (d)가 제공되고, 실제로는 실제 작업을 수행합니다. –

답변

2

DecimalFormat을 사용하면 형식 지정 패턴을 지정할 수 있으므로 형식을 더 잘 제어 할 수 있습니다.

+0

당신과 동의하지만 여기에서는 DecimalFormat이 내부적으로 형식을 지정하는 방법에 대해 묻습니다. –

0

그는 "Double.toString (withSomeParameters)"가 DecimalFormat을 사용하는 대신 작업을 수행하도록 요청할 수 있습니다.

나는 그 이유가 i18n 일 수 있다고 생각한다. 어떤 곳에서는 1,800.39를 입력 할 수 있습니다. 다른 곳에서는 입력 할 수 있습니다. 1.800,39

0

"직접 변환"이란 의미는 아니지만 항상 toString()은 디버그 정보 일뿐입니다! 프론트 엔드에 값을 표시하는 데 사용해서는 안됩니다. 구문 분석 및 서식 지정에는 DecimalFormat을 사용하십시오!

+0

나는 그것에 대해 물었다. DecimalFormat가 내부적으로 Double.toString()을 사용하여 Double 자체의 형식을 지정하는 대신 Double의 형식을 지정하는 이유는 무엇입니까? –

-1

금융 응용 프로그램의 경우 대신 BigDecimal을 사용하면 반올림 모드와 정밀도를 제어 할 수 있습니다.

+0

실제로 두 번 서식을 지정하는 응용 프로그램과 관련된 질문입니다. –

+0

좋아, 그다음 ... – KarlP

0

아마도 Sun은 DRY 원칙을 따르고 있습니다.