2012-04-27 66 views
1

你能否建議從不同格式的字符串中檢索實際值的最佳方法是什麼?如何從Java中的字符串格式化數字獲得實際值?

例子:

我希望能夠在所有這些字符串傳遞:

101,00 
101.00 
-101,00 
-101.00 
100,000.00 
100.000,00 
-100,000.00 
-100.000,00 

,並從方法這些回報:

101.00 
101.00 
-101.00 
-101.00 
100000.00 
100000.00 
-100000.00 
-100000.00 

我應該使用字符串。 replaceAll(「」,「」)還是有更好的方法?

謝謝

+0

類似於http://stackoverflow.com/questions/2379221/java-currency-number-format – Ketan 2012-04-27 07:51:02

回答

1

使用replace都不行。當你需要的是找到'。'的最後一個發生。或','並將其用作小數位。

基於http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

public static void main(String... args) throws ParseException { 
    DecimalFormatSymbols dfs1 = new DecimalFormatSymbols(); 
    dfs1.setDecimalSeparator('.'); 
    dfs1.setGroupingSeparator(','); 

    DecimalFormat df1 = new DecimalFormat("#,##0.00", dfs1); 
    System.out.println(df1.format(-10000)+" parsed is "+df1.parse("-10,000.01")); 

    DecimalFormatSymbols dfs2 = new DecimalFormatSymbols(); 
    dfs2.setDecimalSeparator(','); 
    dfs2.setGroupingSeparator('.'); 

    DecimalFormat df2 = new DecimalFormat("#,##0.00", dfs2); 
    System.out.println(df2.format(-10000)+" parsed is "+df2.parse("-10.000,01")); 
} 

打印

-10,000.00 parsed is -10000.01 
-10.000,00 parsed is -10000.01 
+0

的那麼它會因爲當方法被稱爲我已經知道從應用程序的小數點分隔符,所以我不必考慮這一點。所以我絕對可以這樣做,但我想知道這個問題是否有更好的解決方案。 – goe 2012-04-27 07:50:39

+0

@goe使用DecimalFormat可以被認爲更好。 – 2012-04-27 07:58:49

相關問題