1

我正在尝试将 a 转换numeric StringLong,但它给了我NumberFormatException.

我得到NumberFormatException这个字符串13363190467160024386

Long.parseLong(String s)

以下是我得到的例外 -

java.lang.NumberFormatException: For input string: "13363190467160024386"

有什么建议为什么会发生?

4

5 回答 5

14

绝对 - 该数字大于Long.MAX_VALUE(9223372036854775807)。

改用BigInteger

BigInteger value = new BigInteger("13363190467160024386");
于 2012-11-08T20:39:24.357 回答
2

因为它超出了范围Long

System.out.println(Long.MAX_VALUE);
System.out.println("13363190467160024386");

印刷: -

9223372036854775807
13363190467160024386

您应该使用BigInteger来存储大于此的数字。

于 2012-11-08T20:40:08.210 回答
1

我认为这个数字对于签名来说太大了long

也许尝试一个未签名long的没关系,显然java没有。c# > java 的另一个原因

2^64 = 1.8446744e+19

于 2012-11-08T20:39:46.353 回答
1

最大长是:

9223372036854775807

你的号码比这个大:

13363190467160024386
于 2012-11-08T20:40:25.587 回答
1

您的数量超过了 的限制long,即2^63,或大致9E18。你的号码大概是1.3E14,触发错误。

于 2012-11-08T20:40:58.523 回答