转换为Long时字符串13363190467160024386的数字格式异常

时间:2012-11-08 20:37:54

标签: java numberformatexception

我正在尝试将numeric String转换为Long,但它正在给我NumberFormatException

我为此字符串NumberFormatException

获取13363190467160024386

Long.parseLong(String s)

以下是我得到的例外情况 -

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

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

5 个答案:

答案 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

来说太大了

也许尝试一个未签名的long 从不介意,显然java没有。 c#>的另外一个原因的java

2 ^ 64 = 1.8446744e + 19

答案 3 :(得分:1)

最大长度是:

9223372036854775807

您的电话号码大于此数:

13363190467160024386

答案 4 :(得分:1)

您的号码超出了long的限制,即2^63或大约9E18。您的号码大约是1.3E14,会触发错误。