从java中的文本中读取长整数

时间:2015-01-29 12:46:17

标签: java long-integer

我在文本文件中有一个长整数列表。我想在java中读取这些数字给长的arraylist。输出的数字存储在文件中:

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,实际上是

1 个答案:

答案 0 :(得分:2)

事情是像2.2278e + 08,1.2339e + 09和6.1868e + 08这样的数字是浮点表示法,因此不能直接解析为长数字。

然而,您可以将它们解析为双值来执行类似

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

当然,这与假设您知道所有这些数字都是整数并且它们符合长值的大小有所不同。否则你可能需要采用其他技术。