我真的很难尝试转换字符串
-8.70395364652618e-02
或从String
到double
的类似数量。非常感谢任何帮助。
我可能一直急于问,但这看起来是一个好方法吗?
double val = new BigDecimal(string).doubleValue();
答案 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方法执行。