为什么会这样?我正在解析的字符串看起来很像一个 int。该程序正在从文件中读取,我知道它工作得最多,因为这个数字在列表中很靠后。有任何想法吗?此外,该程序正在解析大于 22 亿的整数,所以我不知道这是否是大小问题。
问问题
5694 次
4 回答
7
带符号的 32 位int
只能是 2^31 或 0x7FFFFFFF (2,147,483,647)。您需要使用更大的数据类型。long
会让你达到 2^63。或者BigInteger类会给你一个任意大小的整数。
于 2012-06-12T17:23:38.707 回答
2
int
可以有最小值-2,147,483,648
和最大值2,147,483,647
(含),您的数字(来自字符串)超出范围
改用对你long
有用Long.parseLong(3291105000)
于 2012-06-12T17:23:26.770 回答
0
使用 a long
,它可以保存 64 位整数。
int
s 最多只能保存约 20 亿个整数long
s 可以容纳高达 ~9e18 的整数
于 2012-06-12T17:26:24.483 回答
0
就像其他人说的那样,这个数字显然超出了 int 的范围,因此你得到了例外。
4 个字节,有符号(二进制补码)。-2,147,483,648 至 2,147,483,647。像所有数字类型一样,int 可以转换为其他数字类型(byte、short、long、float、double)。当有损转换完成时(例如 int 到 byte),转换是以较小类型的长度为模完成的。
于 2012-06-12T17:26:37.360 回答