python - 用 python 计算 pi - 莱布尼茨

标签 python

我正在开始我的 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/

相关文章:

python - 抓取亚马逊卖家中心

主机 header 的 Python 正则表达式

python - 在 python 中计算不带 '*' 符号的(几乎代数)表达式

python - 执行 VPython 程序后 VS Code 集成终端卡住

python - 将多维数组从 perl 脚本传递到 python 脚本

python - 如何使用python导出Windows任务计划程序历史日志?

python - 从 Pandas 组中获取最新值(value)

python - MUSIC算法Spectrum Python实现

python - cx_Oracle 如何将复合/复杂数组传递给 PLSQL 过程?

Python SyntaxError : invalid syntax, python3 中的函数参数是否允许使用括号?