我有一个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)
答案 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,您的字符串以$
开头,这不是有效数字。你需要先把它剥掉。