我在尝试转换字符串时遇到了很大的困难
-8.70395364652618e-02
或从String
到double
的类似数量。任何帮助将不胜感激。
我可能问得太仓促了,但这看起来是个好方法吗?
double val = new BigDecimal(string).doubleValue();
最佳答案
首先,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
(原始类型)。
关于Java解析指数格式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25831949/