2013-05-27 97 views
4

我想打開例如5999.635554至5 999,63。我用DecimalFormat方法如下:格式化雙Android

public static String decimalDoubleForm(double value){ 

     DecimalFormat df = new DecimalFormat("#,###,###.00"); 
     String formatted_value = df.format(value).replaceAll("\\.", ","); 

     return formatted_value; 

} 

然而,當我用它即Util.decimalDoubleForm(value);上例如-4000.4343我收到以下-4,000,43

我想要的結果應該是-4000.4343 =>-4 000,43

+0

嘗試使用字符串'####,###。00'在你的DecimalFormat? –

+0

下面的鏈接可能是有用的: http://stackoverflow.com/questions/9081814/how-to-specify-decimal-delimiter 好運^^ – reidzeibel

+0

你將在德國進行格式化價格格式? –

回答

2

如果你想-4,000.43(從format()調用的字符串),成爲-4 000,43,你可以做替代品。

首先是用空格替換所有,字符,然後替換,所有.字符。

String formatted_value = df.format(value) 
    .replaceAll("," , " ") 
    .replaceAll("\\.", ","); 

當你想交換,.(一)但你仍然可以做到這一點得到問題的是,儘管有3個步驟:

comma => X 
period => comma 
X  => period 

(其中X是否則不出現在字符串中的任何字符,例如,"X")。

但是,可能有一個格式字符串,您可以使用它已經不需要字符串替換。從here看來,特殊字符已經本地化,所以應該有一種方法可以根據區域設置創建DecimalFormat以及特定的DecimalFormatSymbol

至少在Java本身就是這種情況。無論Java Android能否做同樣的事情,我都不確定。據瞭解,他們之前對國際化採取了不同的方式。


(一)該死的歐洲人和他們有趣的數字格式:-)

+0

@ paxdiablo說:「可能有一個格式字符串,您可以使用它已經不需要字符串替換。」我在哪裏可以找到這個功能,任何想法? – Dimitri

+0

@Dimitri,我已經展示了Java類,它將執行一個la DecimalFormat(DecimalFormatSymbols(Locale))''。但我不確定這是否在Android中受支持。恐怕你必須自己驗證一下。如果它不可用,儘管很醜,但multi-'replaceAll()'解決方案應該可以工作。 – paxdiablo

+0

@ paxdiablo:它會工作,因爲安卓系統是java – Dimitri