我正在开始我的 Python 冒险。我当前的程序非常简单,它必须使用莱布尼茨公式计算 pi,并在“a”varibale 的模块小于 x 时停止工作。到目前为止,它看起来像这样:
from math import fabs
from math import pi
x=float(input('Enter accuracy of calculating:'))
sum=0
a=0
n=0
while True:
a=float(((-1)**n)/(2*n+1))
sum+=a
n+=1
result=sum*4
if fabs(a)<x:
break
print('Calculated pi:',result)
print('Imported pi:', pi)
看起来没问题,但问题来了: 在我的 Geanie 版本中,它运行得很好,但在我 friend 的 Geanie 上 - 它计算为 0.0。 另外,在 Ideone.com 上(没有键盘输入,例如 x=0.0001)它也会返回 0.0。
有谁知道问题出在哪里吗?
最佳答案
试试这个
a=((-1)**n)/float(2*n+1)
而不是这个
a=float(((-1)**n)/(2*n+1))
原因:我认为将 a
本身设置为 float 没有意义,但在产生 a
的除法中设置除数或被除数将确保Python 不会截去余数(这是 Python 3.0 之前整数除法的默认设置)。
附带问题:您的风格与 official Python style guidelines 不匹配,所以您可能想要更改它。
关于python - 用 python 计算 pi - 莱布尼茨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249622/