根据您的区域设置,它是否为有效的双精度数。在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