Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何将带美元符号的字符串数值转换为BigDecimal?_Java_String_Bigdecimal - Fatal编程技术网

在java中,如何将带美元符号的字符串数值转换为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)

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

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

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);