整数的最大值和最小值

时间:2011-09-30 01:01:07

标签: python integer

我在python中寻找整数的最小值和最大值。例如,在Java中,我们有Integer.MIN_VALUEInteger.MAX_VALUE。在python中有这样的东西吗?

10 个答案:

答案 0 :(得分:657)

Python 3

在Python 3中,这个问题不适用。普通的int类型是无界的。

但是,您实际上可能正在寻找机器的 word size 。这仍然在Python 3中以sys.maxsize的形式提供。

Python 2

在Python 2中,普通int值的最大值可用sys.maxint

>>> sys.maxint
9223372036854775807

您可以使用-sys.maxint - 1计算最小值,如here所示。

一旦超过此值,Python就会从普通整数切换为长整数。所以大多数时候,你不需要知道它。

答案 1 :(得分:192)

sys.maxint 常量已从Python 3.0开始删除,而是使用 sys.maxsize

  

整数

     
      
  • PEP 237:基本上,长期重命名为int。也就是说,只有一个内置的整数类型,名为int;但它的行为大多像是   老长型。
  •   
  • PEP 238:像1/2这样的表达式返回一个浮点数。使用1 // 2来获取截断行为。 (后一种语法已存在多年,at   至少从Python 2.2开始。)
  •   
  • 删除了sys.maxint常量,因为整数值不再受限制。但是,sys.maxsize可以用作   大于任何实际列表或字符串索引的整数。它符合   实现的“自然”整数大小通常是相同的   作为同一平台上以前版本中的sys.maxint(假设为   相同的构建选项)。
  •   
  • 长整数的repr()不再包含尾随L,因此无条件地剥离该字符的代码将会切断   最后一位数字。 (改用str()。)
  •   
  • 八进制文字不再是0720的形式;改用0o720。
  •   

参考:https://docs.python.org/3/whatsnew/3.0.html

答案 2 :(得分:161)

如果您只需要一个比其他数字更大的数字,您可以使用

float('inf')

以类似的方式,比其他所有人都小:

float('-inf')

这适用于python 2和3。

答案 3 :(得分:75)

在Python中,一旦传递值long,整数将自动从固定大小的int表示切换为可变宽度sys.maxint表示,该值为2 31 < / sup> - 1或2 63 - 1取决于您的平台。请注意附加在此处的L

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

来自Python manual

  

数字是由数字文字创建的,或者是内置函数和运算符的结果。纯文本整数文字(包括二进制,十六进制和八进制数)产生普通整数,除非它们表示的值太大而不能表示为普通整数,在这种情况下它们会产生一个长整数。带有'L''l'后缀的整数文字会产生长整数('L'是首选,因为1l看起来太像十一!)。

Python非常努力地假装它的整数是数学整数并且是无界的。例如,它可以轻松地计算googol

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L

答案 4 :(得分:25)

对于Python 3,它是

import sys
max = sys.maxsize
min = -sys.maxsize -1

答案 5 :(得分:3)

通过使用sys模块(python 3)

import sys

INT_MAX = sys.maxsize  

INT_MIN = -sys.maxsize-1


print(INT_MAX,INT_MIN)

答案 6 :(得分:2)

如果要使用数组或列表索引的最大值(相当于C / C ++中的size_t),则可以使用numpy:

np.iinfo(np.intp).max

这与sys.maxsize相同,但是优点是您不需要为此仅导入sys。

如果要在计算机上将本机int设置为最大值:

np.iinfo(np.intc).max

您可以在doc中查看其他可用类型。

对于浮点数,您还可以使用sys.float_info.max

答案 7 :(得分:1)

我非常依赖这样的命令。

python -c 'import sys; print(sys.maxsize)'

返回Max int: 9223372036854775807

有关&#39; sys&#39;的更多参考资料你应该访问

https://docs.python.org/3/library/sys.html

https://docs.python.org/3/library/sys.html#sys.maxsize

答案 8 :(得分:1)

sys.maxsize实际上不是所支持的最大整数值。您可以将maxsize加倍并单独乘以它,它保持有效和正确的值。

但是,如果尝试使用sys.maxsize ** sys.maxsize,它将使您的计算机挂起大量时间。正如许多人指出的那样,字节和位的大小似乎无关紧要,因为它实际上不存在。我猜想python在需要更多内存空间时会愉快地扩展它的整数。因此,通常没有限制。

现在,如果您正在谈论以安全的方式打包或存储整数,以便以后可以完整地检索它们,那么这当然很重要。我真的不确定打包,但是我知道python的pickle模块可以很好地处理这些问题。字符串表示形式显然没有实际的限制。

实际上,最重要的是:您的应用程序限制是多少?对数字数据有什么要求?使用该限制代替python相当不存在的整数限制。

答案 9 :(得分:0)

您可以这样使用'inf': import math bool_true = 0<math.inf bool_false = 0<-math.inf

引用:math — Mathematical functions