2012-12-24 2 views
1

Java에서 통화 서식을 지정하는 데 문제가 있습니다. 이 같은 출력을 생성,NumberFormat.getCurrencyInstance()에 의해 반환 된 NumberFormat 수정

£ 1.23 
£ 12.34 
£123.45 

NumberFormat.getCurrencyInstance().format(n) 반환 형식이 문자열을 호출하지만, 모든 숫자는 왼쪽 정렬됩니다 : 나는 숫자 형식을 시도하고 모든 소수점 정렬로, 통화로 인쇄 할

£1.23 
£12.34 
£123.45 

미운. 내가 DecimalFormat을 사용하여 솔루션을 선물 this post을 읽었습니다, 그리고 난 나중에 DecimalFormat을 사용하여 통화 기호를 prepending 내 임시 번호로하지만, 누군가가 같은 일을 달성하는 깔끔한 방법을 알고 있었는지 궁금 해서요?

여러분의 도움에 미리 감사드립니다.

+1

휴대용 방식으로하기가 어렵습니다. 첫째, NumberFormat이 앞으로 포맷 할 숫자의 최대 길이를 미리 알지 못하기 때문입니다. 둘째, 일부 지역에서는 통화 기호가 금액이 아닌 이전 값이되기 때문입니다. 자신 만의 솔루션을 구현해야합니다. –

답변

4

당신은 할 수 :

String currencySymbol = Currency.getInstance(Locale.getDefault()).getSymbol(); 
System.out.printf("%s%8.2f\n", currencySymbol, 1.23); 
System.out.printf("%s%8.2f\n", currencySymbol, 12.34); 
System.out.printf("%s%8.2f\n", currencySymbol, 123.45); 

참고 : 이것은 단지 그 문자 전에 양을 표시 통화에서 작동합니다.

또한 doubles are not suitable for representing currency 사실에주의하십시오.

+0

이것은 마치 그 것처럼 보입니다! 당분간, 나는 항상 값 앞에 관계없이 통화 기호를 넣는 것만으로 살아야 할 것입니다 - 대단히 도움이됩니다, 감사합니다 :) –

0

이 시도 :

final NumberFormat nf = NumberFormat.getCurrencyInstance(); 

    nf.setMinimumIntegerDigits(3); 

    System.out.println(nf.format(1.23)); 
    System.out.println(nf.format(12.34)); 
    System.out.println(nf.format(123.45));