4

为什么会这样?我正在解析的字符串看起来很像一个 int。该程序正在从文件中读取,我知道它工作得最多,因为这个数字在列表中很靠后。有任何想法吗?此外,该程序正在解析大于 22 亿的整数,所以我不知道这是否是大小问题。

4

4 回答 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 位整数。

  • ints 最多只能保存约 20 亿个整数
  • longs 可以容纳高达 ~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 回答