我正在尝试使用Ramanujan的公式之一在Python上以任意精度计算pi:http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century.它基本上需要大量因子和高精度浮点数除法.
到目前为止,这是我的代码:http: //pastie.org/private/pa6ijmoowiwiw4xwiqmq
我在pi的第15位附近得到了错误(3.1415926535897930,它应该是3.1415926535897932).你能给出一些建议吗?为什么会这样?我正在使用十进制类型,文档说它允许任意精度浮点数和整数.
PS:这是一个家庭作业,所以我不能使用另一个公式.PSS:我正在使用python 2.7
谢谢:)
使用Decimal(2).sqrt()而不是Decimal(sqrt(2)).
我检查了前 1000 位数字,看起来工作正常。顺便说一句,由于某种原因,您的代码输出小数点后 1007 位,而不是 1000 位。