0

尝试将字符串转换为 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)
4

6 回答 6

2

这个数字太大而无法long在 Java 中表示为 a。最大的可能long9223372036854775807L. 改为使用BigDecimal

另外,最后一个字符是字母B,在任何数字中都是无效的。

于 2012-09-14T07:26:10.297 回答
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
于 2012-09-14T07:33:22.723 回答
0
20120828000040464018674B

不是长文字(B 结尾)

于 2012-09-14T07:27:14.330 回答
0
System.out.println(Long.MAX_VALUE);
// prints 9223372036854775807
// yours' 20120828000040464018674B
于 2012-09-14T07:27:50.807 回答
0

你为什么不去参加 BigInteger 课程

于 2012-09-14T07:28:45.283 回答
0

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

于 2012-09-14T07:32:28.730 回答