如何将长整数的最大值赋给变量,例如,类似于C ++的LONG_MAX
。
答案 0 :(得分:121)
没有明确定义的限制。可用地址空间量构成实际限制
(取自this网站)。查看Numeric Types上的文档,您将看到Long integers have unlimited precision
。在Python 2中,当Integers超出限制时,它们会自动切换为long:
>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>
对于整数我们有
int的最大值可以在{2.}}的Python 2.x中找到。它已在Python 3中删除,但通常可以使用sys.maxint
。来自the changelog:
删除了sys.maxint常量,因为不再存在限制 到整数的值。但是,sys.maxsize可以用作 大于任何实际列表或字符串索引的整数。它符合 实现的“自然”整数大小通常是相同的 作为同一平台上以前版本中的sys.maxint(假设为 相同的构建选项)。
,对于对the difference感兴趣的人(Python 2.x):
sys.maxint Python常规支持的最大正整数 整数类型。这至少是2 ** 31-1。最大的负整数 is -maxint-1 - 使用2的补码产生不对称性 二进制算术。
sys.maxsize 平台支持的最大正整数 Py_ssize_t类型,因此最大大小列表,字符串,dicts和 许多其他容器都可以拥有。
为了完整性,这里是Python 3 version:
<强>了sys.maxsize 强> 给出最大值的整数可以是Py_ssize_t类型的变量。在32位平台上通常是2 ^ 31 - 1 在64位平台上使用2 ^ 63 - 1。
有sys.maxsize
和float("inf")
。这些可以与其他数字类型进行比较:
float("-inf")
答案 1 :(得分:36)
Python long
可以任意大。如果您需要一个大于任何其他值的值,则可以使用float('inf')
,因为Python在比较不同类型的数值时没有任何问题。同样,对于小于任何其他值的值,您可以使用float('-inf')
。
答案 2 :(得分:19)
整数大小不受限制,在Python中没有最大值。
根据你对你要做的事情的评论,你正在考虑的事情是
minval = MAXINT;
for (i = 1; i < num_elems; i++)
if a[i] < a[i-1]
minval = a[i];
这不是如何用Python思考的。更好的Python翻译(但仍然不是最好的)将是
minval = a[0] # Just use the first value
for i in range(1, len(a)):
minval = min(a[i], a[i - 1])
请注意,上面根本不使用MAXINT。该部分解决方案适用于任何编程语言:您不需要知道最高可能值,只是为了找到集合中的最小值。
但无论如何,你在Python中真正所做的只是
minval = min(a)
也就是说,你根本不写循环。内置的min()
函数获得整个集合的最小值。
答案 3 :(得分:8)
long
类型使用arbitrary precision arithmetic并且没有最大可能值。它受可用内存的限制。 Python 3.x对于无法用本机整数表示的值没有特殊类型 - 一切都是int
,并且在后台处理转换。
答案 4 :(得分:7)
与C / C ++不同,Python中的Long具有无限的精度。有关更多信息,请参阅python中的Numeric Types部分。要确定整数的最大值,您可以参考sys.maxint
。您可以从sys的文档中获取更多详细信息。
答案 5 :(得分:0)
您可以使用:float的最大值是
float('inf')
表示否定
float('-inf')
答案 6 :(得分:0)
A)为了进行便宜的比较/算术虚拟,请使用math.inf
。或math.nan
,它除了身份检查(FALSE
)以外的任何方向(包括nan == nan
)比较is
并呈现任何算术运算(如nan - nan
){{1 }}。或根据您的使用情况而定的较高的实整数(例如nan
)。对于位掩码虚拟对象(例如在sys.maxsize
中),请使用mybits & bitmask
。
B)要获取平台原始的最大有符号long int(或long long):
-1
C)可以通过长时间运行的循环戏弄内存溢出来估计最大Python整数(尝试>>> 256 ** sys.int_info.sizeof_digit // 2 - 1 # Python’s internal primitive
2147483647
>>> 256 ** ctypes.sizeof(ctypes.c_long) // 2 - 1 # CPython
2147483647
>>> 256 ** ctypes.sizeof(ctypes.c_longlong) // 2 - 1 # CPython
9223372036854775807
>>> 2**63 - 1 # Java / JPython primitive long
9223372036854775807
-可以由256**int(8e9)
停止)。但是不能合理地使用它,因为它的表示形式已经消耗了所有内存,并且其消耗量远远大于KeyboardInterrupt
。
答案 7 :(得分:-1)
在python3中,你可以将float值发送到int函数中,以整数表示形式得到该数字1.7976931348623157e + 308。
import sys
int(sys.float_info.max)