Python中的无限整数

Python 3具有float('inf')Decimal('Infinity'),但没有int('inf')。那么,为什么在语言中缺少表示无穷整数集的数字呢? int('inf')不合理吗?

Carlo Pires asked 2020-01-24T02:05:01Z
3个解决方案
11 votes

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

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

也就是说,floatDecimal的表示形式可以存储这些特殊值。 但是,基本类型int中没有可以存储的内容。 当您在无符号的32位int中超出2 ^ 32的限制时,只需简单地再次翻转为0。

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

Søren V. Poulsen answered 2020-01-24T02:05:35Z
7 votes

没错,整数无穷大是可能的,并且没有任何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
Neil G answered 2020-01-24T02:06:00Z
2 votes

对于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]

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

Jacques Sauvé answered 2020-01-24T02:06:25Z
translate from https://stackoverflow.com:/questions/24587994/infinite-integer-in-python