2010-01-13 102 views

回答

21

這是一個我總是最後使用無論是在Java類或通過FMT:formatNumber JSTL標籤:

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

它總是產生至少$ 0.00美元和顯示時是一致的。在需要的地方還包括數千個分離器。如果這是您的要求,您可以將美元符號前面的減號移動。

2

如果你想要一個特定的格式,而不是依靠默認值,最好創建自己的DecimalFormat

編輯:你也許也投NumberFormat.getCurrencyInstance()的結果DecimalFormat並調整自己的喜好。

+0

也許你是對的,但我的應用程序應該能夠到f ormat貨幣在可能的語言環境中。對所有這些地區實施格式化不是太難嗎? – 2010-01-13 12:16:24

30

它需要對由NumberFormat.getCurrencyInstance()返回的DecimalFormat進行一點調整,以獨立於區域的方式進行。下面是我(在Android測試):

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); 
相關問題