2013-05-14 72 views
0

從我下面的decimalForm方法,我想轉換雙值7777.54 7 777,54,但我得到7 777 54.什麼錯過了?結果應該是7 777,54格式化雙dp

public static String decimalForm(double value){ 

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

      return formatted_value; 
     } 
+0

具有u試圖更換爲.00。##? – Skillcoil 2013-05-14 07:23:49

+0

是的,但得到7 777 54 – Dimitri 2013-05-14 07:27:05

+0

@PankajKumar打破每個陳述如何?不是一個有用的評論,因爲它代表。 – EJP 2013-05-14 08:42:35

回答

1

這個工作對我來說:

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

其實我試圖打印出df.format(value),並與value=95871我得到95.871,00

+0

@PankajKumar它的確如此。 'replaceAll'接受一個正則表達式,如果你只是使用'.',你將得到一個空字符串,因爲一切都被替換了。 – BackSlash 2013-05-14 07:28:19

+0

@Pankaj && BackSlash,很好,謝謝你的作品。是的,我今天學到了一些新東西:) – Dimitri 2013-05-14 07:30:09

+0

@Dimitri歡迎您!如果您認爲我的回答是最好的,請將其標記爲已接受:) – BackSlash 2013-05-14 07:31:05

0

可以使用

String formatted_value = String.format("$%.2f", value); 
0

在模式#,###,###.00,.是小數點分隔符,,是小組分隔符。用於這兩個分隔符的字符取決於您的語言環境。

例如,如果您是法國人,df.format(value)將等於7 777,54

0

這是沒有版本與string.replace

DecimalFormat df = new DecimalFormat("#,###,###.00", new DecimalFormatSymbols(Locale.FRANCE)); 
    String s = df.format(7777.54); 
    System.out.println(s); 

輸出

7 777,54