我正在尝试将numeric String
转换为Long
,但它正在给我NumberFormatException
。
我为此字符串NumberFormatException
13363190467160024386
Long.parseLong(String s)
以下是我得到的例外情况 -
java.lang.NumberFormatException: For input string: "13363190467160024386"
有什么建议为什么会发生?
答案 0 :(得分:14)
绝对 - 该数字大于Long.MAX_VALUE
(9223372036854775807)。
改为使用BigInteger
:
BigInteger value = new BigInteger("13363190467160024386");
答案 1 :(得分:2)
因为它超出Long
的范围。
System.out.println(Long.MAX_VALUE);
System.out.println("13363190467160024386");
打印: -
9223372036854775807
13363190467160024386
您应该使用BigInteger
来存储大于该值的数字。
答案 2 :(得分:1)
我认为这个号码对签名的long
也许尝试一个未签名的从不介意,显然java没有。 c#>的另外一个原因的java long
2 ^ 64 = 1.8446744e + 19
答案 3 :(得分:1)
最大长度是:
9223372036854775807
您的电话号码大于此数:
13363190467160024386
答案 4 :(得分:1)
您的号码超出了long
的限制,即2^63
或大约9E18
。您的号码大约是1.3E14
,会触发错误。