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