所以前几天,Google Play开发者控制台的Crashes部分中出现了以下错误:
java.lang.NumberFormatException: Invalid double: "−0.05"
现在纠正我,如果我错了,但这实际上是一个有效的双重 - 它被认为是我的计算机,模拟器和我自己的Android设备(Nexus 5)上的有效双重
它崩溃的设备是运行Android 4.3的Galaxy Note II - 任何关于它可能会崩溃的想法吗?
答案 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
同时确保符号为减号的符号为“连字符”,而不是“长符号”。