从字符串解析Double时的NumberFormatException

时间:2013-06-04 10:21:02

标签: java exception numberformatexception

长话短说这是我的代码抛出数字格式异常: -

String percenta = "6.415‏";
holder.setPercent(Double.parseDouble(percenta));

我已经尝试了一个Double.valueOf(),但它们都没有工作,仍然抛出相同的异常

这是异常消息

java.lang.NumberFormatException: For input string: "6.415‏"

这里似乎有什么问题?

修改

所以问题在于我的编码毕竟是如何改变的, 我使用JSOUP来解析页面,它应该是UTF-8, 是Double.parseDouble不是UTF-8友好吗?

6 个答案:

答案 0 :(得分:3)

尝试使用:

NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("6.415");
double d = number.doubleValue();

这可能是因为您的内部Locale规范。

为了验证它,检查它是否有效:

String percenta = "6,415‏";
holder.setPercent(Double.parseDouble(percenta));

答案 1 :(得分:2)

我猜这是因为您的计算机运行的是非英语语言环境。尝试使用Double.valueOf(“6.415”)作为英语语言环境,或者查看Best way to parseDouble with comma as decimal separator?以获取有关解析的更多信息。

答案 2 :(得分:2)

变量名称percenta的选择表明您使用的是区域设置sk-SK

区域设置的小数点分隔符为,,而不是.

答案 3 :(得分:1)

6.415是有效值,不应抛出NumberFormatException 检查你的编码。当我复制粘贴您的代码时,保存它时出错。

enter image description here

答案 4 :(得分:0)

Double解析时不支持'percenta =“6.415”'的编码。

我尝试复制代码时请检查以下错误。

enter image description here

答案 5 :(得分:0)

问题在于6.415。您似乎正在使用没有兼容字符编码的键盘。