OverflowError:(34,“结果太大”)

发布于 2021-01-29 19:34:35

我收到溢出错误(OverflowError:(34,“结果太大”))
我想将pi计算为100个小数,这是我的代码:

def pi(): 
    pi = 0 
    for k in range(350): 
        pi += (4./(8.*k+1.) - 2./(8.*k+4.) - 1./(8.*k+5.) - 1./(8.*k+6.)) / 16.**k 
    return pi 
print(pi())
关注者
0
被浏览
84
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Python浮点数既不精确,也不具有无限大小。当k = 349时,16.**k太大了-几乎是2 ^
    1400。幸运的是,该decimal库允许任意精度并可以处理大小:

    import decimal
    decimal.getcontext().prec = 100
    def pi():
        pi = decimal.Decimal(0)
        for k in range(350):
            pi += (decimal.Decimal(4)/(decimal.Decimal(8)*decimal.Decimal(k+1))...)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看