如何在java中将带有美元符号的字符串数值转换为BigDecimal?

时间:2012-01-26 18:16:03

标签: java string bigdecimal

我有一个String格式的美元金额。例如:String salePrice = $ 348.00。

但是,我想将此String值转换为BigDecimal值,但它在字符串中有一个美元符号。我尝试了下面的代码,但它没有用。

BigDecimal sPrice = new BigDecimal(salePrice);

我最终在下面得到了这个例外:

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:8)

首先删除美元符号($)。

答案 2 :(得分:3)

构造函数需要字符串中的Number,您的字符串以$开头,这不是有效数字。你需要先把它剥掉。