Java以指数格式解析数字

时间:2014-09-14 09:36:10

标签: java parsing

我真的很难尝试转换字符串

-8.70395364652618e-02

或从Stringdouble的类似数量。非常感谢任何帮助。

我可能一直急于问,但这看起来是一个好方法吗?

double val = new BigDecimal(string).doubleValue();

2 个答案:

答案 0 :(得分:2)

首先,double 无限精确。您拥有的号码将由最接近的 double值表示 - 您的号码可以表示为double

public static void main(String[] args) throws Exception {
    BigDecimal val = new BigDecimal("-8.70395364652618e-02");
    System.out.println(val);
    System.out.println(val.doubleValue());
}

输出:

-0.0870395364652618
-0.0870395364652618

因此标准的解析方法将起作用:

String val = "-8.70395364652618e-02";
System.out.println(Double.valueOf(val));
System.out.println(String.valueOf(Double.parseDouble(val)));

不同之处在于Double.valueOf将返回Double(对象包装器)而Double.parseDouble将返回double(基本类型)。

答案 1 :(得分:1)

您可以使用Double.valueOf()。这个方法会解析你的String之类的东西。有关详情,请参阅Double.valueOf的{​​{3}}。

正如 herrlock 在评论中正确提到的那样,你也可以使用Double.parseDouble(),但我会使用第一种方法,因为parseDouble() {{1} }}:

  

返回一个初始化为由指定String表示的值的新double,由double类的valueOf方法执行。