字符串到Long NumberFormatException

时间:2012-09-14 07:24:49

标签: java

我在尝试将字符串转换为Long时遇到错误。

Long l = Long.parseLong(str);

例外是:

java.lang.NumberFormatException: For input string: "20120828000040464018674B"
at java.lang.Long.parseLong(Long.java:415)
at java.lang.Long.parseLong(Long.java:461)

6 个答案:

答案 0 :(得分:2)

该数字太大而无法在Java中表示为long。可能最大的long9223372036854775807L。请改用BigDecimal

此外,最后一个字符是字母B,任何数字都无效。

答案 1 :(得分:2)

它似乎是日期/时间而不是数字

String dt = "20120828000040464018674B";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
Date date = sdf.parse(dt.substring(0, 17));
int nanos = Integer.parseInt(dt.substring(17, 17 + 6));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
System.out.printf("%s%06d%n", sdf2.format(date), nanos);

打印

2012/08/28 00:00:40.464018674

答案 2 :(得分:0)

20120828000040464018674B

不是长文字(最后是B)

答案 3 :(得分:0)

System.out.println(Long.MAX_VALUE);
// prints 9223372036854775807
// yours' 20120828000040464018674B

答案 4 :(得分:0)

为什么不选择BigInteger类

答案 5 :(得分:0)

根据Javadoc for Long,Long.MAX_Value定义为 2 ^ 63 - 1 。您提供的值大于给定值,因此会抛出 NumberFormatException