Maximum value for long integer

How can I assign the maximum value for a long integer to a variable, similar, for example, to C++'s LONG_MAX.

278796 次浏览

Long integers:

没有显式定义的限制。可用地址空间的数量形成了一个实际的限制。
(取自 这个网站)。看看 数字类型上的文档,你会看到 Long integers have unlimited precision。在 Python2中,当长度超过极限时,Integers 会自动切换到 long:

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>


对于整数我们有

Maxint 和 maxsize:

The maximum value of an int can be found in Python 2.x with sys.maxint. It was removed in Python 3, but sys.maxsize can often be used instead. From 变更记录:

因为不再有限制,所以删除了 sys.maxint 常量 但是,sys.maxsize 可以用作 整数大于任何实际的列表或字符串索引 实现的“自然”整数大小,通常是相同的 在同一平台上的前几个版本中将其作为 sys.maxint (假设 相同的构建选项)。

对于任何对 the difference(Python 2.x)感兴趣的人:

由 Python 的正则函数支持的最大正整数 整数类型。这是至少2 * * 31-1。最大的负整数 Is-maxint-1-不对称是由于使用2的补语造成的 二进制算术。

平台支持的最大正整数 Py _ ssize _ t 类型,因此是最大大小列表、字符串、 dicts 和 many other containers can have.

and for completeness, here's the Python 3版本:

Sys.maxsize 一个整数,给出 Py _ ssize _ t 类型的变量可以取的最大值。在32位平台上通常是2 ^ 31-1 在64位平台上的2 ^ 63-1。

彩车:

float("inf")float("-inf")。这些可以与其他数字类型进行比较:

>>> import sys
>>> float("inf") > sys.maxsize
True

与 C/C + + 不同,Long 在 Python 中具有无限的精度。参考 python 中的 数字类型部分以获得更多信息。您可以从 Sys的文档中获得更多详细信息。

Python 2.x 中的 long类型使用 arbitrary precision arithmetic,没有最大可能值这样的东西。它受到可用内存的限制。对于不能用本机整数表示的值,Python 3.x 没有特殊的类型ーー所有的值都是 int,转换是在后台处理的。

Python long可以任意大小。如果需要一个大于其他任何值的值,可以使用 float('inf'),因为 Python 可以比较不同类型的数值。类似地,对于小于任何其他值的值,可以使用 float('-inf')

对题目问题的直接回答:

Integers are unlimited in size and have no maximum value in 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()函数获得整个集合的最小值。

You can use: max value of float is

float('inf')

没有

float('-inf')

在 python3中,可以将 float 值发送到 int 函数中,以整数形式获取数字1.7976931348623157 e + 308。

import sys
int(sys.float_info.max)

A)为了便宜的比较/算术虚拟使用 math.inf。或者 math.nan,它比较除身份检查(is)以外的 FALSE在任何方向(包括 nan == nan) ,并呈现任何算术(如 nan - nan) nan。或者根据您的用例(例如 sys.maxsize)设置一个相当高的实数。对于位掩码假人(例如在 mybits & bitmask中) ,使用 -1

B)获取平台原语的最大有符号 long int (或 long long) :

>>> 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

C)最大 Python 整数可以通过一个长时间运行的循环来测试内存溢出来估计(尝试 256**int(8e9)-可以被 KeyboardInterrupt停止)。但是它不能被合理地使用,因为它的表示已经消耗了所有的内存,并且它比 sys.float_info.max大得多。