将指数字符串值转换为双精度 - Java

Convert exponential string value to double - Java

我有一个指数字符串值

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)

我做错了什么?

你的代码没有问题。要看到这一点,请考虑以下代码段:

public class exp {
  public static void main(String[] args) {
    String str = "2.00000181334612E15";
    Double d = (Double.parseDouble(str));
    System.out.println(d);
  }
};

如果您从 Double.parseDouble 得到 NullPointerException,则意味着您给了它一个空参数。您答案中的代码行没有给它一个空参数。所以我想在你的完整代码中,你必须在没有意识到的情况下给 Double.parseDouble 一个空参数。

根据 Double.parseDouble() 文档,它调用 Double.valueOf() 并且 Double.valueOf() 的文档指定您可以给它指数值。