Java Integer.parseInt无法解析字符串

时间:2011-11-06 21:23:08

标签: java

我正在解析一个15位数的字符串,如下所示:

String str = "100004159312045";
int i = Integer.parseInt(str);

这样做我得到了一个例外。 为什么? Integer.parseInt有哪些限制?我有什么其他选择来将这么长的字符串转换为数字?

5 个答案:

答案 0 :(得分:25)

你的号码太大而不适合int,这是32位,范围只有-2,147,483,648到2,147,483,647。

请尝试使用Long.parseLonglong有64位,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。

答案 1 :(得分:5)

因为int的最大值略高于2,000,000,000

你可以使用long或BigInteger

long有两倍的数字可以存储(最大值是int的平方),BigInteger可以处理任意大数字

答案 2 :(得分:4)

int是32个有符号位,其最大值是2 ^ 31-1 = 2147483647

答案 3 :(得分:3)

您尝试解析的值超过了整数的最大大小。

答案 4 :(得分:3)

int的范围介于Integer.MAX_VALUEInteger.MIN_VALUE之间(即从2147483647到-2147483648)。您无法解析该范围外的int值。

您可以将long m = Long.parseLong(str);BigInteger b = new BigInteger(str);用于大整数。