问题:整数的最大值和最小值
我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有Integer.MIN_VALUE
和Integer.MAX_VALUE
。python中是否有类似的东西?
回答 0
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
9223372036854775807
你可以计算与最小值-sys.maxint - 1
如图所示这里。
一旦超过此值,Python就会从纯整数无缝转换为长整数。因此,大多数时候,您不需要了解它。
回答 1
如果您只需要一个大于所有其他数字的数字,则可以使用
float('inf')
以类似的方式,比所有其他方法小:
float('-inf')
这适用于python 2和3。
回答 2
该sys.maxint
常数已经在Python 3.0取出以后,改为使用sys.maxsize
。
整数
- PEP 237:从本质上讲,long已重命名为int。也就是说,只有一个内置的整数类型,称为int;但它的行为基本上类似于旧的long类型。
- PEP 238:类似1/2的表达式返回浮点数。使用1 // 2获得截断行为。(至少从Python 2.2开始,后一种语法已经存在多年了。)
- sys.maxint常量已删除,因为整数值不再受限制。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,并且通常与同一平台上的先前版本中的sys.maxint相同(假定具有相同的生成选项)。
- 长整数的repr()不再包含结尾的L,因此无条件剥离该字符的代码将砍掉最后一位数字。(改为使用str()。)
- 八进制文字不再采用0720的形式;请改用0o720。
回答 3
在Python中,一旦您传递值,整数将自动从固定大小的int
表示形式转换为宽度可变的long
表示形式,该值取决于平台sys.maxint
是2 311-1或2 63-1。请注意L
,此处已附加:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
从Python手册:
数字是通过数字文字或内置函数和运算符创建的。未经修饰的整数文字(包括二进制,十六进制和八进制数字)将生成纯整数,除非它们表示的值太大而无法表示为纯整数,在这种情况下,它们将生成一个长整数。带
'L'
或'l'
后缀的整数文字产生长整数('L'
首选,因为1l
看起来太像11!)。
Python非常努力地假装其整数是数学整数并且是无界的。例如,它可以轻松计算出googol:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
回答 4
对于Python 3,它是
import sys
max = sys.maxsize
min = -sys.maxsize - 1
回答 5
回答 6
如果您想要数组或列表索引的最大值(相当于size_t
C / C ++),则可以使用numpy:
np.iinfo(np.intp).max
这是相同的,sys.maxsize
但是优点是您不需要为此仅导入sys。
如果要在计算机上将max用于本机int:
np.iinfo(np.intc).max
您可以在doc中查看其他可用类型。
对于float,您也可以使用sys.float_info.max
。
回答 7
我严重依赖这样的命令。
python -c 'import sys; print(sys.maxsize)'
返回的最大整数:9223372036854775807
有关“ sys”的更多参考,请访问