我正在尝试将 a 转换numeric String
为Long
,但它给了我NumberFormatException
.
我得到NumberFormatException
这个字符串13363190467160024386
Long.parseLong(String s)
以下是我得到的例外 -
java.lang.NumberFormatException: For input string: "13363190467160024386"
有什么建议为什么会发生?
我正在尝试将 a 转换numeric String
为Long
,但它给了我NumberFormatException
.
我得到NumberFormatException
这个字符串13363190467160024386
Long.parseLong(String s)
以下是我得到的例外 -
java.lang.NumberFormatException: For input string: "13363190467160024386"
有什么建议为什么会发生?
绝对 - 该数字大于Long.MAX_VALUE
(9223372036854775807)。
改用BigInteger
:
BigInteger value = new BigInteger("13363190467160024386");
因为它超出了范围Long
。
System.out.println(Long.MAX_VALUE);
System.out.println("13363190467160024386");
印刷: -
9223372036854775807
13363190467160024386
您应该使用BigInteger
来存储大于此的数字。
我认为这个数字对于签名来说太大了long
也许尝试一个未签名的没关系,显然java没有。c# > java 的另一个原因long
2^64 = 1.8446744e+19
最大长是:
9223372036854775807
你的号码比这个大:
13363190467160024386
您的数量超过了 的限制long
,即2^63
,或大致9E18
。你的号码大概是1.3E14
,触发错误。