0

有人可以解释为什么我会得到NumberFormatException.forInputString这个:

string: "01000000000000000000000000000001"
Integer.parseInt(string, 10)

当我需要数字的正整数表示时,我该如何解决?

谢谢

4

5 回答 5

5

“01000000000000000000000000000001”不是有效的int.

int最小值为 -2,147,483,648,最大值为 2,147,483,647(含)。


您可以将其转换为BigInteger

BigInteger myInt = new BigInteger(myString);
于 2013-05-02T13:21:01.280 回答
2

Integer.parseInt将数字解析为int32 位有符号整数。这个数字1000000000000000000000000000001太大了,无法放入int.

您可以存储的最大数字int是 2,147,483,647 (2 31 - 1)。

于 2013-05-02T13:21:34.013 回答
1

这个数字远大于Integer.MAX_VALUE

于 2013-05-02T13:20:33.233 回答
1

那将超过Integer.MAX_VALUE. 从文档

一个保持 int 可以具有的最大值的常数,2 31 -1。

这是2147483647

BigInteger在这里可能对您有用,因为它将存储任意精度的整数,即实际上是无界的。

于 2013-05-02T13:20:37.593 回答
0

输入数字(01000000000000000000000000000001)大于Interger.MAX_VALUE,不是可解析的字符串。

任何大于 2147483647 且小于 -2147483648 的值都不是有效整数。

查找有关文档的更多信息

于 2013-05-02T13:20:53.517 回答