在Java中将字符串“10 000.00”转换为双精度浮点数的错误

3

我尝试使用 Double.valueOf 方法将字符串 "10 000.00" 转换为双精度浮点数,但出现了输入格式错误:

java.lang.NumberFormatException: For input string: "10 000.00"

如何将其转换为double类型?


4
数值字符串中不能有空格。 - Sotirios Delimanolis
5个回答

6

您可以使用:

Double.valueOf(input.replaceAll("[ ]",""));

为了在尝试转换之前删除空格。
示例:
public static void main(String[] args) {
  System.out.print(Double.valueOf("10 000.00".replaceAll("[ ]","")));
}

输出

10000.0

能请您展示一下 for(char c : test.toCharArray()) {System.out.print((int) c+",");} 的输出吗? - Arnaud Denoyelle
1
好的,你的空格不是一个真正的空格 :) 它是一个不换行空格(在 HTML 中是  ,ASCII 160)。这就是为什么替换没有被执行。现在,让我们找到如何用空白字符来替换这个字符。 - Arnaud Denoyelle
1
我已经找到了解决方案:使用replaceAll("\u00A0","") - user2687553
感谢所有的开发者们 :) - user2687553
@tchiko,你能否尝试一下我的方法?我已经尝试过了,对于特殊空格也可以正常工作:D。如果它对你也有效,请记得点赞:D。提前感谢!+1给你的答案。 - Tuna
显示剩余5条评论

3
java.lang.NumberFormatException For input string: "10 000.00"

您的输入字符串"10 000.00"中有空格。

请使用以下代码从您的 String中删除空格:

Double.valueOf("10 000.00".replaceAll("[^0-9\\.]", "")) // also Works with Special space like \u00A0

3
我看到您在上面的评论中输入了特殊空格。我认为我的代码可以帮助解决:D。
String number = input.replaceAll("[^0-9\\.]", "");
System.out.println(Double.valueOf(number));

1
当进行转换前,请删除10000之间的空格。可以尝试添加replaceAll:
Double.valueOf(str.replaceAll("[ ]+",""));

0
Double.parse(String); // 

Double类的静态方法将接受一个字符串并返回一个双精度浮点数值。 希望它有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接