我试图通过公式计算出π的近似值
pi= 3 + (4/(2*3*4)) - (4/(4*5*6)) + (4/(6*7*8)) - …
(依此类推)。但是,我的代码(如下所示)有两个单独的答案(3.1415926535900383和3.141592653590042):
有人知道为什么吗?你知道吗
def approximate_pi(n):
approx=0
deno=2
if n == 1:
return 3
for x in range(n-1):
if x%2:
approx -= 4/((deno)*(deno+1)*(deno+2))
else:
approx += 4/((deno)*(deno+1)*(deno+2))
deno+=2
return approx+3
以及
def approximate_pi(n):
approx=3
deno=2
if n == 1:
return 3
for x in range(n-1):
if x%2:
approx -= 4/((deno)*(deno+1)*(deno+2))
else:
approx += 4/((deno)*(deno+1)*(deno+2))
deno+=2
return approx
我想是因为你不能在pc机上有精确的浮点数。你可以在这里获得更多信息:Why can't decimal numbers be represented exactly in binary?
近似算法近似。两个数字都不是π的真值。你的两个版本从不同的起点开始,那么为什么你会惊讶于它们给出的近似值略有不同呢?重要的是,运行它们的时间越长,它们就越接近真实值。你知道吗
请注意,这是而不是浮点有限精度表示的伪影。虽然浮点舍入会影响结果,但即使使用无限制精度的算术,也会看到差异。你知道吗
这是因为python中float的方式。如果你没有小数点前的数字,它会给出3个额外的精确数字(我的试验)。这改变了答案,因为当你从0开始时,你会得到一个完全不同的计算。你知道吗
相关问题 更多 >
编程相关推荐