2013-03-01 152 views
1

我想將輸入字符串轉換爲歐元/保加利亞貨幣,我有兩種情況。貨幣格式化問題

首先, 當輸入爲10,000保加利亞格式應該像10 000歐元格式應爲10.000

其次, 如果輸入的是10.23,然後歐洲和保加利亞的格式應該是10,23。 我試圖用大小數,像做,

String s = "+000000055511.00"; 
     BigDecimal b = new BigDecimal(s.replace(",", ".")); 
     b.setScale(2, RoundingMode.HALF_UP); 
     System.out.println(b.toPlainString()); 

但我不能夠做到這一點作爲一個普通的工具,它需要和轉換成歐元或保加利亞currency.Is那裏同任何效用?有人能幫助我嗎?

+0

你試過使用NumberFormat.getCurrencyInstance()嗎? – user902383 2013-03-01 13:35:22

回答

2

您可以使用java.text.NumberFormat.getCurrencyInstance(Locale)與適當的當地人。如果沒有這樣的當地人符合您的要求,那麼請構建您自己的小數點格式化程序java.text.DecimalFormat,其模式爲##' '##0.00或分別爲##' '##0.00##' '##0.00##,##0.00加上適當的貨幣符號。該格式可應用於BigDecimal

String s = "+000000027511.00"; 
BigDecimal B = new BigDecimal(s); 
// don't replace "." by ",": english number format expected here 
b.setScale(2, RoundingMode.HALF_UP); 

NumberFormat f = new DecimalFormat(...); //initialize as requested see docs 
System.out.println(f.format(b)); 

的另一個問題是,爲什麼你不想小數位數,如果你的號碼爲10000?如果確實如此,則必須更多地定義兩個格式化程序,並且必須根據您的標準選擇它們。

希望這會有所幫助。

+0

供參考:Oracle的Java 7實現[支持](http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html)''java.util'和'java.text'的'bg_BG'。 – McDowell 2013-03-01 15:08:58