Java 无法分析“;1000.00“;字符串到数字

Java 无法分析“;1000.00“;字符串到数字,java,Java,我有几个标签显示数值,我需要将这些文本解析为数字。问题在于,当值大于999时,解析方法无法引发以下异常: 线程“AWT-EventQueue-0”中出现异常 java.lang.NumberFormatException:对于输入字符串:“1000.00” java.lang.NumberFormatException.forInputString(未知源) 我尝试了几种解析方法,如Double.valueOf(string)、newBigDecimal(string)、new BigInteg

我有几个标签显示数值,我需要将这些文本解析为数字。问题在于,当值大于999时,解析方法无法引发以下异常:

线程“AWT-EventQueue-0”中出现异常 java.lang.NumberFormatException:对于输入字符串:“1000.00” java.lang.NumberFormatException.forInputString(未知源)


我尝试了几种解析方法,如
Double.valueOf(string)
、new
BigDecimal(string)
new BigInteger(string)
等等……但总是会引发异常。

在解析之前删除逗号,如下所示:

double d = Double.parseDouble(string.replace(",", ""));

我猜你用的是法语数字。 您可以:


在解析之前删除逗号,如下所示:
Double.parseDouble(string.replace(',','')
您必须删除逗号字符。Java根据句点字符计算十进制数,但数千个等并不是按定界符分组的,这很容易。我早该想到的。非常感谢您的帮助。严格来说:不同的国家有不同的小数点(波兰、德国逗号),千位分隔符可以是逗号、点或空格。在现实生活中,我们波兰程序员(在严格的波兰软件中)使用类似于答案的方法,但请记住它们是不可移植的。这是一种干净的方法+1请注意:可以使用
NumberFormat.getNumberInstance()
来使用系统默认区域设置。如果应该使用这个,那么就没有必要显式地传递它。我没有使用法语数字,但是结果是一样的。我想我将创建一个接口,基于相同的自定义
DecimalFormat
format
parse
方法创建接口。这至少应该是便携式的。非常感谢你的帮助。这些不是法国数字。法语表示法要求用空格分隔千,用逗号分隔小数和单位。
NumberFormat.getNumberInstance(Locale.FRANCE).parse("1,000")