如何在Python中表示整数的最小值和最大值?在Java中,我们有Integer。MIN_VALUE和Integer.MAX_VALUE。
请参见:Python中的最大浮点数是什么?
如何在Python中表示整数的最小值和最大值?在Java中,我们有Integer。MIN_VALUE和Integer.MAX_VALUE。
请参见:Python中的最大浮点数是什么?
当前回答
sys。Maxsize并不是实际支持的最大整数值。您可以将maxsize加倍并将其自身相乘,它仍然是一个有效且正确的值。
然而,如果你尝试sys。Maxsize ** sys。Maxsize,它将挂你的机器相当长的时间。正如许多人指出的那样,字节和位大小似乎并不相关,因为它实际上不存在。我猜当python需要更多的内存空间时,它会很高兴地扩展它的整数。所以一般来说没有限制。
现在,如果您谈论的是以一种安全的方式打包或存储整数,以便以后可以完整地检索它们,那么当然这是相关的。我真的不确定打包,但我知道python的pickle模块处理这些事情很好。字符串表示显然没有实际限制。
所以,底线是:你的应用限制是什么?数值数据需要什么?使用这个限制,而不是python中几乎不存在的整数限制。
其他回答
对于Python 3,它是
import sys
max_size = sys.maxsize
min_size = -sys.maxsize - 1
在Python中,一旦传入sys值,整数将自动从固定大小的int表示转换为可变宽度的长表示。Maxint,它是231 - 1或263 - 1,这取决于你的平台。注意这里加了个L
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
来自Python手册:
数字是由数字字面值或作为内置函数和操作符的结果创建的。未经修饰的整数字面量(包括二进制、十六进制和八进制数)产生普通整数,除非它们所表示的值太大,不能用普通整数表示,在这种情况下,它们产生长整数。带'L'或'L'后缀的整数字面值会产生长整数('L'是首选,因为1l看起来太像11了!)
Python非常努力地假装它的整数是数学整数并且是无界的。例如,它可以轻松计算googol:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
我非常依赖这样的命令。
python -c 'import sys; print(sys.maxsize)'
返回的最大int值:9223372036854775807
有关'sys'的更多参考,您可以访问
https://docs.python.org/3/library/sys.html
https://docs.python.org/3/library/sys.html#sys.maxsize
你可以这样使用'inf':
import math
bool_true = 0 < math.inf
bool_false = 0 < -math.inf
参考:math -数学函数
如果你想要数组或列表索引的最大值(相当于C/ c++中的size_t),你可以使用numpy:
np.iinfo(np.intp).max
这与sys相同。Maxsize的优点是你不需要import sys。
如果你想在机器上为本机int设置max:
np.iinfo(np.intc).max
您可以在doc中查看其他可用的类型。
对于浮点数,你也可以使用sys.float_info.max。