Java解析指数格式的数字

标签 java parsing

我在尝试转换字符串时遇到了很大的困难

-8.70395364652618e-02

或从Stringdouble的类似数量。任何帮助将不胜感激。

我可能问得太仓促了,但这看起来是个好方法吗?

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/

相关文章:

java - 使用 XMLSchema : Best Practices? (Java) 配置解析代码中的 XML 验证

Xamarin Studio 中的 java Lang UnsupportedClassVersion 错误

java - NetBeans Web 服务客户端 stub - 类型不兼容?

java - 如何使用 ZPM 段解析 DFT_P03 消息

c++ - QT中使用QjsonDocument解析api数据

ios - 快速解析双 JSON 编码数组并访问它

algorithm - Shunting-Yard VS 递归下降解析器

java - hamcrest 匹配器不匹配相等的问题

java - native 方法上的 JNI UnsatisfiedLinkError

java - JasperReports 无法使用 JSF 2 和 PrimeFaces 3.5 导出数据