我正在尝试使用Ramanujan的公式之一在Python上以任意精度计算π:http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century。它基本上需要大量的阶乘运算和高精度的浮点数除法。
到目前为止,我的代码如下:http://pastie.org/private/pa6ijmoowiwiw4xwiqmq
我在圆周率的第15位附近得到了错误( 3.1415926535897930,应该是3.1415926535897932 )。你能给出一些建议吗?为什么会发生这种情况?我使用的是decimal类型,文档上说它允许任意精度的浮点数和整数。
PS:这是一个家庭作业,所以我不能使用其他公式。PSS:我使用的是python 2.7
谢谢:)
发布于 2013-06-03 16:10:05
使用Decimal(2).sqrt()而不是Decimal(sqrt(2))。
我检查了前1000个数字,它似乎工作得很好。顺便说一下,由于某些原因,您的代码输出1007位小数,而不是1000位。
https://stackoverflow.com/questions/16892257
复制相似问题