Python中的无限整数

Car*_*res 53 python math infinity python-3.x

Python 3有float('inf'),Decimal('Infinity')但没有int('inf').那么,为什么语言中缺少表示无限整数集的数字?是int('inf')不合理的?

Sør*_*sen 11

取自此处:https://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html

IEEE 754浮点数可以表示正或负无穷大,NaN(不是数字)

也就是说,表示floatDecimal可以存储这些特殊值.但是,基本类型int中没有任何内容可以存储相同的内容.当你在无符号的32位int中超过2 ^ 32的限制时,你只需再次翻转为0.

如果需要,可以创建一个包含整数的类,该整数可能具有无限值的可能性.

  • 2**10000在Python 3中很好.整数实现不再有限制,但缺少int('inf')特殊类型. (17认同)

Nei*_*l G 8

没错,整数无穷大是可能的,并且没有将其添加到Python标准中。这可能是因为math.inf几乎在所有情况下都可以取代它(如Martijn在他的评论中所述)。

同时,我在PyPI上添加了扩展整数的实现:

In [0]: from numbers import Integral, Real

In [0]: from extended_int import int_inf, ExtendedIntegral, Infinite

In [0]: i = int_inf

In [4]: float(i)
Out[4]: inf

In [5]: print(i)
inf

In [6]: i ** i

Out[6]: inf

In [7]: i
Out[7]: inf

In [9]: isinstance(i, Real)

Out[9]: True

In [10]: isinstance(i, Integral)

Out[10]: False

In [11]: isinstance(i, Infinite)

Out[11]: True

In [12]: isinstance(i, ExtendedIntegral)

Out[12]: True

In [13]: isinstance(2, ExtendedIntegral)

Out[13]: True

In [14]: isinstance(2, Infinite)

Out[14]: False
Run Code Online (Sandbox Code Playgroud)


小智 5

对于python 2。有时您需要一个非常大的整数。例如,我可能想用 x[:n] 生成一个子数组,有时我可能希望将 n 设置为一个值,以便生成整个数组。由于您不能对 n 使用浮点数(python 需要一个整数),因此您需要一个“大整数”。这样做的一个好方法是使用可用的最大整数:sys.maxint。下面是一个例子:

# MAX_SOURCES = sys.maxint # normal setting
MAX_SOURCES = 5 # while testing

# code to use an array ...
... sources[:MAX_SOURCES]
Run Code Online (Sandbox Code Playgroud)

因此,在测试时,我可以使用较小的源数组,但在生产中使用完整的数组。

  • 您可以为此使用“无”。将切片的端点之一设置为“无”相当于省略它。 (10认同)