尝试将字符串转换为 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)
尝试将字符串转换为 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)
这个数字太大而无法long
在 Java 中表示为 a。最大的可能long
是9223372036854775807L
. 改为使用BigDecimal
。
另外,最后一个字符是字母B
,在任何数字中都是无效的。
它似乎是日期/时间而不是数字
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
20120828000040464018674B
不是长文字(B 结尾)
System.out.println(Long.MAX_VALUE);
// prints 9223372036854775807
// yours' 20120828000040464018674B
你为什么不去参加 BigInteger 课程
根据 Long 的 Javadoc,Long.MAX_Value
定义为2^63 - 1。您提供的值大于给定值,因此会抛出NumberFormatException 。