2012-02-21 99 views
1

爲了執行簡單的計算,我必須解析格式如下的字符串:「€15,10」作爲小數。解析十進制

但是,項目代碼庫對我來說是全新的。

我已經試過這樣:

String[] strArray = PriceNew.split(" "); 
PriceNew = strArray[1]; 

只是爲了獲取字符串的數字部分,但沒有奏效。

我也試過

PriceNew = replace(PriceNew, '€ ', ''); 

但是,這並不能工作,因爲字符編碼是完全關閉。歐元符號導致編譯失敗。

+0

您是否嘗試在刪除歐元符號後用點替換昏迷? – VirtualTroll 2012-02-21 17:55:23

+0

在Java文件中寫入Java代碼舊式的方式不會使它成爲JSP問題。我刪除了不相關的JSP標籤。順便說一下,爲什麼不直接將小數存儲爲'BigDecimal'而不是'String'?從正確的數據類型開始使用它代表的值。它避免了不必要的各種轉換麻煩。您可以在Java中使用'NumberFormat' API和在JSP中使用''標籤來將其格式化爲貨幣,只要該值必須呈現給人類。 – BalusC 2012-02-21 18:00:01

回答

0

我會保持它真正簡單,

//Remove currency symbol 
PriceNew.replace('€', ''); 
//Remove comma 
PriceNew.replace(',', ''); 
//Remove spaces 
PriceNew.trim(); 
//Cast to new float 
float price = new Float(PriceNew); 
//Retain decimal value 
price /= 100; 
-1

對於貨幣金額,您可能更願意使用BigDecimal而不是浮點數或雙精度來保持精度:

String s = "€ 15,10"; 
BigDecimal bd = new BigDecimal(s.substring(1).trim().replace(",", ".")); 
System.out.println(bd); // 15.10 
+0

downvote的任何原因? – assylias 2013-05-28 15:22:39