2014-11-21 81 views
1

我有一個Struts 2項目,我顯示一個項目的價格。我想改變適應本地化的格式。struts2格式貨幣千分號

例如:

locale en_GB : 75.9 
locale el_GR : 75,9 

目前我使用的消息格式兩種語言環境:

{0,number,##0.00} 

我試圖改變格式的一種語言:

{0,number,##0,00} 

但顯示的價格是錯誤的:0,76(將所有內容移動到了de cimal部分)。

有什麼建議嗎?


編輯:

注意,在我的情況下,我想強制逗號作爲應用程序中的所有區域設置小數點分隔符。

+0

你能說明什麼? – 2014-11-21 10:14:51

+0

這是我使用它的方式: Panos 2014-11-21 10:23:21

+0

小數點分隔符取決於語言環境。 S2會根據當前的語言環境格式化數字,所以只需將該模式保留爲「{0,number,## 0.00}」,它應該可以工作。 – 2014-11-21 10:42:58

回答

1

可以使用DecimalFormat Constructor同時接受一個模式和DecimalFormatSymbols,創建由its constructor採取區域設置:

Locale greekLocale = new Locale("el", "GR"); 

// Thousands separator, decimal separator etc... 
DecimalFormatSymbols greekDFS = DecimalFormatSymbols.getInstance(greekLocale); 

// Your pattern, their symbols 
NumberFormat nf = new DecimalFormat("#,##0.0##", greekDFS); 

看看在running demo。順便說一句,我用el_GR,與gr_GR似乎小數點分隔符仍然是點。不知道gr_GR是什麼。

P.S:Here是與在Struts2格式化模式和TextProvider一個答案,你怎麼用這種格式,這可能有助於未來的遊客