繁体   English   中英

有什么办法可以增加蟒蛇的无限极限吗?

[英]Is there any way to increase pythons infinity limit?

我正在做https://projecteuler.net/problem=57我得到分子和分母,如果分子长于分母,我在总数中加一。

然而,在某一时刻(在 n=805 以上),分子和分母变得如此之大,以至于 python 将它们转换为无穷大。 如果你想测试它,这是我的代码。

def sqrt_2(max_iteration, total = 0, previous_numerator = 1, previous_denominator = 2, iteration = 1):
    
    numerator_test = previous_numerator + previous_denominator
    denominator_test = previous_denominator
    print(numerator_test, denominator_test, numerator_test / denominator_test)
    if len(str(numerator_test)) > len(str(denominator_test)):
        total += 1
    
    if iteration == max_iteration:
        return total
    
    next_value_numerator = 1 * previous_denominator
    next_value_denominator = int(( 2 + (previous_numerator / previous_denominator) ) * previous_denominator)
    
    return sqrt_2(max_iteration, total, next_value_numerator, next_value_denominator, iteration + 1)
            


print("\n", sqrt_2(806))

有什么办法可以增加这个无穷大吗? 806真的很接近1000。如果和IDE / Python版本有什么关系,我用的是Spyder 5.0和Z23EEEB4347BDD756BFC6B7EE9A33

提前致谢!

您不能在此处使用浮点运算。 浮点支持有限数量的有效数字(17 或一些这样的数字)。 当代码除以数字时,结果是一个浮点数,很快(迭代 25 次或类似的迭代)将没有足够的精度将其表示为float

实际发生的是你的数字变得如此之大, float甚至不能代表它们的指数,并且溢出到无穷大。 但这不重要,因为数字在溢出之前很久就错了。

您需要的是一种算法,它只使用 integer 运算(如加法和乘法)计算分子和分母,没有除法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM