在python中创造最大的数字

wim*_*wim 1 python integer comparison-operators

我正在寻找一个Python对象,保证比任何给定的比较更大int.它应该是可移植的,独立于平台的,并且可以在Python 2.7+和3.x上运行.

例如:

x = float('inf')
while True:
    n = next(my_gen)
    if my_calc(n):
        x = min(n, x)
        if my_cond(x):
            break
Run Code Online (Sandbox Code Playgroud)

在这里,我已经用于float('inf')此目的,因为它似乎行为正确.但这感觉很脏,因为我认为它依赖于一些潜在的浮动规范,我不知道这是依赖于平台还是以意想不到的方式打破.

我知道我可以创建自己的类并定义比较运算符,但我认为可能存在一种现有的内置方式.

这样使用安全float('inf')吗?是否有一种不那么丑陋的方式来创造这个"最大整数"?

Mar*_*ers 9

float('inf')保证测试大于任何数字,包括整数.这不是特定于平台的.

从floatobject.c源代码:

else if (!Py_IS_FINITE(i)) {
    if (PyInt_Check(w) || PyLong_Check(w))
        /* If i is an infinity, its magnitude exceeds any
         * finite integer, so it doesn't matter which int we
         * compare i with.  If i is a NaN, similarly.
         */
        j = 0.0;
Run Code Online (Sandbox Code Playgroud)

Python整数本身只受内存的限制,所以使用10 ** 3000它可能不够大.

float('inf')是始终可用的; Python将为您处理底层平台细节.

  • `float(' - inf')`:) (2认同)