Discuss / Python / 有没有大佬解答一下,为什么精度不对啊。哪里有误差?不能用filter吗

有没有大佬解答一下,为什么精度不对啊。哪里有误差?不能用filter吗

Topic source

import itertools

def pi(N):

    def is_odd(n):

        return n % 2 == 1

    odd = filter(is_odd,itertools.count(1))

    barrier = itertools.takewhile(lambda x:x < 2*N-1 ,odd)

    sum = 0

    n = 1

    for num in barrier:

        sum = sum + 4/num*n

        n = -1*n

    return sum

#测试的输出结果

3.2523659347188767

3.1516934060711166

3.142593654340044

3.1416926635905345

编程yang

#2 Created at ... [Delete] [Delete and Lock User]

barrier = itertools.takewhile(lambda x:x < 2*N-1 ,odd)

应该是小于等于,否则会丢掉一次累加,如下:

barrier = itertools.takewhile(lambda x:x <= 2*N-1 ,odd)


  • 1

Reply