gpt4 book ai didi

java - 解析没有尾数和指数分隔符的 double

转载 作者:行者123 更新时间:2023-11-29 07:25:41 25 4
gpt4 key购买 nike

我必须从具有以下格式的数据文件中读取 double

1.234+5 // = 1.234e+5
1.234-5 // = 1.234e-5

我无法更改格式,我必须从数据文件中解析数百万/数十亿的两倍(= 方法应该是有效的)。

我可以提供一个十进制格式还是有一个方便的方法(在 java jdk 中可用)能够解析这些 double ?

Double.parseDouble("1.234+5"); // throws NumberFormatException
Scanner scanner = new Scanner("1.234+5");
Scanner.nextDouble(); // throws InputMismatchException

编辑 1我称之为数据文件的精度:数据文件是 ENDF 格式的文件,这是一种非常严格的格式(300 页手册),这里是其中一个文件的摘录

9.223500+4 2.330248+2          0          0          0          63515 8457
2.22102+16 1.57788+13 0 0 6 03515 8457
4.170051+4 1.312526+3 1.641191+5 1.625818+3 4.413323+6 1.648523+53515 8457

我可以用一个简单的方法解析整数

Integer.parseInt()

但我不能加倍。

最佳答案

您可以使用正则表达式插入一个 e,然后以正常方式解析它:

private static final Pattern INSERT_EXPONENT = Pattern.compile("(.*)([+-].*)");

System.out.println(INSERT_EXPONENT.matcher("1.234+5").replaceFirst("$1e$2"));
System.out.println(INSERT_EXPONENT.matcher("1.234-5").replaceFirst("$1e$2"));

这只是快速和肮脏的,并不能防止无效输入。

关于java - 解析没有尾数和指数分隔符的 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53561000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com