2010-01-13 3 views
24

이 아닌 마이너스 기호로 마이너스 USD 금액을 포맷하려면 마이너스 기호로 마이너스 USD 통화 값을 인쇄하려면 어떻게해야합니까? NumberFormat.getCurrencyInstance()괄호 (Java)

답변

21

내가 항상 자바 클래스 또는 FMT를 통해 중 하나를 사용하게 하나입니다

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00"); 
String formatted = format.format(15.5); 

항상 적어도 $ 0.00를 생성하고 표시 할 때 일치한다. 또한 필요에 따라 수 천명의 분리자를 포함합니다. 귀하의 요구 사항 인 경우 달러 기호 앞의 마이너스 기호를 이동할 수 있습니다.

2

기본값에 의존하지 않고 특정 형식을 원한다면 자신의 DecimalFormat을 만드는 것이 가장 좋습니다.

편집 : 아마도 NumberFormat.getCurrencyInstance()의 결과를 DecimalFormat으로 캐스팅하고 원하는대로 조정할 수 있습니다. formatNumber의 JSTL 태그 : 여기

+0

은 아마 당신이 바로,하지만 내 응용 프로그램 할 수 있어야 F 로트에서의 ormat 통화. 모든 로케일에 대해 포매팅을 구현하는 것이 너무 어렵지 않습니까? –

30

NumberFormat.getCurrencyInstance()에 의해 반환 된 DecimalFormat을 약간 조정해야만 로캘에 독립적으로 수행 할 수 있습니다. 여기에 내가 (안드로이드 테스트) 무슨 짓을했는지 :

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance(); 
String symbol = formatter.getCurrency().getSymbol(); 
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need 
formatter.setNegativeSuffix(""); 

IIRC는 Currency.getSymbol() 모든 시스템에 대한 모든 로케일에 대한 값을 반환하지 않을 수 있지만, 중요한 사람을 위해 일해야한다 (그리고 나는에 합리적인 대체가 있다고 생각 자신의, 당신이) 아무것도 할 필요가해서는 안

1

시도 :

NumberFormat.getCurrencyInstance(Locale.CANADA);

0
NumberFormat.getCurrencyInstance(Locale.UK);