2012-01-26 31 views
23

我有一個字符串格式的美元金額。例如:String salePrice = $ 348.00。如何在Java中將帶美元符號的字符串數字值轉換爲BigDecimal?

但是,我想將此字符串值轉換爲BigDecimal值,但它在字符串中具有美元符號。我嘗試了下面的代碼,但它不工作。

BigDecimal sPrice = new BigDecimal(salePrice); 

我最終得到下面這個異常:

java.lang.NumberFormatException 
    at java.math.BigDecimal.<init>(Unknown Source) 
    at java.math.BigDecimal.<init>(Unknown Source) 

回答

40

BigDecimal Constructor取一個有效的數字字符串。

字符串表示由可選符號, '+'( '\ u002B')或 ' - '( '\ u002D')爲,隨後的零個或 多個十進制數字的序列(以下簡稱「整數「),可選地接着是分數,可選地隨後是指數。

String salePrice = "$348.00"; 
String price = salePrice.replace("$",""); 
BigDecimal sPrice = new BigDecimal(price); 
System.out.println(sPrice); 

輸出= 348.00

你也可以看看NumberFormat類。使用這個課程,你可以設置你的對應Locale

String salePrice = "$123.45"; 
Locale locale = Locale.US; 
Number number = NumberFormat.getCurrencyInstance(locale).parse(salePrice); 
System.out.println(number); 

輸出= 123.45

+0

什麼,如果字符串值爲null或「」。我的setproperty只接受bigDecimal。 – JNPW

+0

您無法將'null'值傳遞給bigDecimal構造函數。用'try-catch'包裝我的代碼來捕獲異常。 – RanRag

+0

+1,因爲這在今天幫助我。 – Brian

8

刪除美元符號($)第一。

+6

一美元是不是一個很大的小數,這些天 – Pedantic

3

構造函數在字符串中需要一個數字,您的字符串以$開頭,這不是一個有效的數字。你需要先將其去掉。

相關問題