整数的最大值和最小值

1233 投票
12 回答
2020205 浏览
提问于 2025-04-17 03:23

在Python中,如何表示整数的最小值和最大值呢?在Java里,我们有 Integer.MIN_VALUEInteger.MAX_VALUE 这样的表示方式。


另外可以参考: Python中的最大浮点数是多少?.

12 个回答

315

从Python 3.0开始,sys.maxint这个常量被去掉了,取而代之的是sys.maxsize

整数

  • PEP 237:简单来说,long这个类型被改名为int。也就是说,现在只有一种内置的整数类型,叫做int,但它的表现方式大部分和以前的long类型是一样的。

...

  • sys.maxint这个常量被去掉了,因为现在整数的值没有限制了。不过,你可以使用sys.maxsize,它可以作为一个比任何实际的列表或字符串索引都大的整数。它符合实现的“自然”整数大小,通常在同一平台的早期版本中和sys.maxint是一样的(假设使用了相同的构建选项)。
515

如果你只需要一个比其他所有数字都大的数字,可以使用:

float('inf')

类似地,如果你需要一个比所有其他数字都小的数字,可以使用:

float('-inf')

这个方法在Python 2和Python 3中都可以用。

1293

Python 3

在Python 3中,这个问题不适用。普通的 int 类型是没有上限的。

不过,你可能想了解的是当前解释器的 字大小,通常这个字大小和机器的字大小是一样的。在Python 3中,这个信息可以通过 sys.maxsize 获取,它代表一个有符号字能表示的最大值。换句话说,它就是可以创建的最大列表或内存序列的大小。

一般来说,一个无符号字能表示的最大值是 sys.maxsize * 2 + 1,而一个字的位数可以用 math.log2(sys.maxsize * 2 + 2) 计算出来。想了解更多信息,可以查看 这个回答

Python 2

在Python 2中,普通的 int 类型的最大值可以通过 sys.maxint 获取:

>>> sys.maxint  # on my system, 2**63-1
9223372036854775807

你可以用 -sys.maxint - 1 来计算最小值,具体可以参考 文档

一旦超过这个值,Python会自动从普通整数切换到长整数。所以大多数情况下,你不需要知道这个值。

撰写回答