从 java 中的 txt 中读取长整数

Read long integers from txt in java

我在文本文件中有一个长整数列表。我想将这些数字读入 java 中的长数组列表。输出号码存储在文件中:

2.2278e+08
1.2339e+09
6.1868e+08

我读取那些长数字的代码如下:

for (String line : Files.readAllLines(Paths.get("ids.txt"))) {
                    ids.add(Long.parseLong(line, 10));
                    System.out.println(Double.valueOf(line).longValue());
}

但是我遇到了以下异常:

Exception in thread "main" java.lang.NumberFormatException: For input string: "2.2278e+08"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at twittertrendsetters.TwitterTrendSetters.main(TwitterTrendSetters.java:580)

Java 结果:1

如何将 2.2278e+08 转换为长整数 22278111 实际上是

问题是像2.2278e+08、1.2339e+09和6.1868e+08这样的数字是浮点数,因此不能直接解析为长数字。

但是您可以将它们解析为双精度值,例如

long l = Double.valueOf("2.2278e+08").longValue();

当然,这与您知道所有这些数字都是整数并且它们适合长值大小的假设背道而驰。否则,您可能需要求助于其他技术。