在Python上用十进制计算Pi



我正在尝试使用Ramanujan的公式之一:http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century在Python上以任意精度计算pi。它基本上需要大量的阶乘和高精度的浮点数除法。

下面是我的代码:http://pastie.org/private/pa6ijmoowiwiw4xwiqmq

我在圆周率的第十五位数附近得到错误(3.1415926535897930,它应该是3.1415926535897932)。你能给点建议吗?为什么会这样?我使用的是十进制类型,文档说它允许任意精度的浮点数和整数。

PS:这是家庭作业,所以我不能用其他公式。PSS:我正在使用python 2.7

谢谢:)

Decimal(2).sqrt()代替Decimal(sqrt(2))

我检查了前1000位数字,它似乎工作得很好。顺便说一下,由于某些原因,您的代码输出的是小数点后1007位而不是1000位。

最新更新