Python 整数的最大值和最小值
我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有Python 整数的最大值和最小值,python,integer,Python,Integer,我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有Integer.MIN\u值和Integer.MAX\u值。python中有类似的东西吗?python 3 在Python3中,这个问题不适用。普通int类型是无界的 但是,您实际上可能正在查找有关当前解释器的信息,在大多数情况下,这些信息与机器的字号相同。在Python3中,该信息仍然可用作sys.maxsize,它是由有符号字表示的最大值。等价地,它是最大可能的列表或内存的大小 通常,由无符号字表示的最大值为sys.ma
Integer.MIN\u值
和Integer.MAX\u值
。python中有类似的东西吗?python 3
在Python3中,这个问题不适用。普通int
类型是无界的
但是,您实际上可能正在查找有关当前解释器的信息,在大多数情况下,这些信息与机器的字号相同。在Python3中,该信息仍然可用作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将从普通整数无缝切换到长整数。因此,大多数情况下,您不需要知道它。在Python中,一旦传递值,整数将自动从固定大小的
int
表示转换为可变宽度的表示,该值为231-1或263-1,具体取决于您的平台。注意这里附加的L
:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
从:
数字由数字文字或内置函数和运算符创建。未加修饰的整数文本(包括二进制、十六进制和八进制数)生成纯整数,除非它们表示的值太大而不能表示为纯整数,在这种情况下,它们生成一个长整数。带有'L'
或'L'
后缀的整数文本产生长整数('L'
是首选,因为1l
看起来太像11!)
Python非常努力地假装它的整数是数学整数并且是无界的。例如,它可以轻松地计算a:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
从Python 3.0开始,已删除了sys.maxint常量,改为使用sys.maxsize 整数
- PEP237:本质上,long重命名为int。也就是说,只有一个内置的整型,名为int;但它的行为与 老长型
- PEP 238:类似于1/2的表达式返回浮点。使用1//2获取截断行为。(后一种语法已存在多年,至少 至少在Python 2.2之后。)
- sys.maxint常量已删除,因为整数的值不再有限制。但是,sys.maxsize可以用作 大于任何实际列表或字符串索引的整数。符合 实现的“自然”整数大小通常相同 与同一平台上早期版本中的sys.maxint相同(假设 相同的构建选项)
- 长整数的repr()不再包含尾随的L,因此无条件删除该字符的代码将删除 改为最后一位。(请改用str()
- 八进制文字不再是0720的形式;改用0o720
请参阅:如果您只需要一个比所有其他数字都大的数字,您可以使用
float('inf')
以类似的方式,一个比所有其他数字都小的数字:
float('-inf')
这在Python2和Python3中都适用。对于Python3,它是
import sys
max = sys.maxsize
min = -sys.maxsize - 1
我非常依赖这样的命令
python -c 'import sys; print(sys.maxsize)'
返回的最大整数:9223372036854775807
有关“sys”的更多参考信息,请访问
如果需要数组或列表索引的最大值(相当于C/C++中的
size\t
),可以使用numpy:
np.iinfo(np.intp).max
这与sys.maxsize相同,但优点是您不需要仅为此导入sys
如果希望计算机上的本机int为max:
np.iinfo(np.intc).max
您可以在中查看其他可用类型
对于浮动,您也可以使用sys.float\u info.max您可以这样使用“inf”:
import math
bool_true = 0 < math.inf
bool_false = 0 < -math.inf
导入数学
bool_true=0
请参阅:
sys。maxsize
实际上不是支持的最大整数值。您可以将maxsize加倍并将其自身相乘,这样它就保持了一个有效且正确的值
但是,如果您尝试sys.maxsize**sys.maxsize
,它将在相当长的时间内挂起您的机器。正如许多人指出的,字节和位大小似乎并不相关,因为它实际上并不存在。我猜python只是在需要更多的内存空间时很高兴地扩展了它的整数。所以一般来说没有限制
现在,如果你说的是以一种安全的方式包装或存储整数,它们以后可以完整地检索,那么这当然是相关的。我真的不确定如何打包,但我知道python的pickle
模块可以很好地处理这些事情。字符串表示显然没有实际的限制
实际上,底线是:你的申请限制是多少?数字数据需要什么?使用该限制,而不是python完全不存在的整数限制。这个数字可能看起来是任意的,但事实并非如此。9223372036854775807正好是
2^63-1
,因此您得到了一个64位int。一般来说,n位整数的值范围为-2^(n-1)
到2^(n-1)-1
。请注意,如果您使用的是32位Python运行时,sys.maxint将返回2^31-1
,即使Python将使用long
数据类型无缝地跳转到64位,也要使用sys.maxsize
,正如@Akash Rana所建议的那样。比如说,它也出现在Python2中。这将使代码更兼容两个Python版本