在java中,如何将带美元符号的字符串数值转换为BigDecimal?
我有一个字符串格式的美元金额。例如:String salePrice=$348.00 但是,我想将此字符串值转换为BigDecimal值,但字符串中有一个美元符号。我尝试了下面的代码,但它不起作用在java中,如何将带美元符号的字符串数值转换为BigDecimal?,java,string,bigdecimal,Java,String,Bigdecimal,我有一个字符串格式的美元金额。例如:String salePrice=$348.00 但是,我想将此字符串值转换为BigDecimal值,但字符串中有一个美元符号。我尝试了下面的代码,但它不起作用 BigDecimal sPrice = new BigDecimal(salePrice); 我最终得到以下例外情况: java.lang.NumberFormatException at java.math.BigDecimal.<init>(Unknown Source)
BigDecimal sPrice = new BigDecimal(salePrice);
我最终得到以下例外情况:
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(Unknown Source)
at java.math.BigDecimal.<init>(Unknown Source)
java.lang.NumberFormatException
位于java.math.BigDecimal。(未知源)
位于java.math.BigDecimal。(未知源)
首先删除美元符号($)。构造函数要求字符串中有一个数字,您的字符串以一个无效的数字开头。你需要先把它去掉。这个函数需要一个有效的数字字符串
字符串表示法由可选符号组成,
“+”(“\u002B”)或“-”(“\u002D”),后跟一个零或零的序列
更多的十进制数字(“整数”),可选后跟
分数,可选后跟指数
输出=348.00
你也可以看看课堂。使用该类,您可以设置相应的语言环境
String salePrice = "$123.45";
Locale locale = Locale.US;
Number number = NumberFormat.getCurrencyInstance(locale).parse(salePrice);
System.out.println(number);
Output=
123.45
如果字符串值为null或“”,该怎么办。my setproperty只接受bigDecimal。不能将null
值传递给bigDecimal构造函数。将我的代码包装成try catch
以捕获异常。注意,对于其他地区,这将失败。现在一美元不是一个大小数
String salePrice = "$123.45";
Locale locale = Locale.US;
Number number = NumberFormat.getCurrencyInstance(locale).parse(salePrice);
System.out.println(number);