有人可以解释为什么我会得到NumberFormatException.forInputString
这个:
string: "01000000000000000000000000000001"
Integer.parseInt(string, 10)
当我需要数字的正整数表示时,我该如何解决?
谢谢
有人可以解释为什么我会得到NumberFormatException.forInputString
这个:
string: "01000000000000000000000000000001"
Integer.parseInt(string, 10)
当我需要数字的正整数表示时,我该如何解决?
谢谢
“01000000000000000000000000000001”不是有效的int
.
int
最小值为 -2,147,483,648,最大值为 2,147,483,647(含)。
您可以将其转换为BigInteger:
BigInteger myInt = new BigInteger(myString);
Integer.parseInt
将数字解析为int
32 位有符号整数。这个数字1000000000000000000000000000001
太大了,无法放入int
.
您可以存储的最大数字int
是 2,147,483,647 (2 31 - 1)。
这个数字远大于Integer.MAX_VALUE
。
那将超过Integer.MAX_VALUE
. 从文档:
一个保持 int 可以具有的最大值的常数,2 31 -1。
这是2147483647
BigInteger在这里可能对您有用,因为它将存储任意精度的整数,即实际上是无界的。
输入数字(01000000000000000000000000000001)大于Interger.MAX_VALUE
,不是可解析的字符串。
任何大于 2147483647 且小于 -2147483648 的值都不是有效整数。
查找有关文档的更多信息