Android NumberFormatException:无效的Double - 除了值是有效的Double

时间:2014-03-05 14:51:24

标签: java android parsing double numberformatexception

所以前几天,Google Play开发者控制台的Crashes部分中出现了以下错误:

java.lang.NumberFormatException: Invalid double: "−0.05"

现在纠正我,如果我错了,但这实际上是一个有效的双重 - 它被认为是我的计算机,模拟器和我自己的Android设备(Nexus 5)上的有效双重

它崩溃的设备是运行Android 4.3的Galaxy Note II - 任何关于它可能会崩溃的想法吗?

2 个答案:

答案 0 :(得分:9)

根据您的区域设置,它是或不是有效的双倍。对于US / ENGLISH语言环境,-0.05是一个有效的双精度型,但是有一个FRENCH语言环境,例如,它不是(它应该是-0,05逗号)。

你可以通过以下方式看到它:

NumberFormat fmt = NumberFormat.getNumberInstance(Locale.US);
double d = fmt.parse("-0.05").doubleValue(); //-0.05

fmt = NumberFormat.getNumberInstance(Locale.FRENCH);
d = fmt.parse("-0.05").doubleValue(); //-0.0
d = fmt.parse("-0,05").doubleValue(); //-0.05

修改

但是你的问题可能不是那样。减号无效。您正在使用而不是-(它们看起来相同,但字符不同)。演示:

Double.parseDouble("-0.05"); //ok
Double.parseDouble("−0.05"); //exception

答案 1 :(得分:0)

对于双常量,语言要求您使用-0.05d格式(带有“d”后缀)。请参阅reference

同时确保符号为减号的符号为“连字符”,而不是“长符号”。