【发布时间】:2015-03-20 12:44:23
【问题描述】:
我有一个指数字符串值
String str = "2.00000181334612E15";
我正在尝试将其转换为双精度值。
Double d = (Double.parseDouble(str));
但是我得到一个异常如下,
Exception in thread "main" java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1047)
at java.lang.Double.parseDouble(Double.java:521)
at com.swissre.lhrte.poi.test.TestClient.main(Test.java:133)
我做错了什么?
【问题讨论】:
-
如果第 1047 行是
Double d = ...行,那么当str在那里使用时不知何故为NULL。你用调试器检查了吗? -
确实如此。如果
str为空,这就是我得到的堆栈跟踪,但是当str实际上“2.00000181334612E15”时它工作正常。 (这就是为什么总是值得提供一个简短但完整的程序来演示问题......) -
仅供参考,您也不需要括号。你可以这样做:
Double d = Double.parseDouble(str); -
Nope line number 133 is Double d = . . .
-
对不起,我的意思是第 521 行......但无论如何,正如@JonSkeet 提到的,如果没有MCVE,很难弄清楚这一点
标签: java type-conversion double exponential