有没有大佬解答一下,为什么精度不对啊。哪里有误差?不能用filter吗
Topic sourcebarrier = itertools.takewhile(lambda x:x < 2*N-1 ,odd)
应该是小于等于,否则会丢掉一次累加,如下:
barrier = itertools.takewhile(lambda x:x <= 2*N-1 ,odd)
- 1
barrier = itertools.takewhile(lambda x:x < 2*N-1 ,odd)
应该是小于等于,否则会丢掉一次累加,如下:
barrier = itertools.takewhile(lambda x:x <= 2*N-1 ,odd)
Aunlit_Drean曚朔
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