6

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

到目前为止,这是我的代码:http: //pastie.org/private/pa6ijmoowiwiw4xwiqmq

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

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

谢谢:)

4

1 回答 1

3

使用Decimal(2).sqrt()而不是Decimal(sqrt(2)).

我检查了前 1000 位数字,它似乎工作正常。顺便说一句,由于某种原因,您的代码输出 1007 个小数位而不是 1000 个。

于 2013-06-03T08:10:04.673 回答