2013-06-03 61 views
6

我想使用Ramanujan的公式之一在Python上以任意精度計算pi:http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century。它基本上需要大量的因子和高精度浮點數分割。在Python上使用十進制來計算Pi

這裏是到目前爲止我的代碼: http://pastie.org/private/pa6ijmoowiwiw4xwiqmq

我得到錯誤的地方周圍pi的第十五位(3.1415926535897930,它應該是3.1415926535897932)。 你能提供一些建議,爲什麼會發生? 我正在使用十進制類型和文檔說,它允許任意精度浮動和整數。

PS:這是一項家庭作業,所以我不能使用另一個公式。 PSS:我使用python 2.7

謝謝:)

+2

您是否意識到'Decimal(sqrt(2))'只是執行'sqrt(2)'的複雜方法? 'Decimal'?嘗試'Decimal(2).sqrt()' – Bakuriu

回答

3

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

我檢查了前1000個數字,它似乎工作正常。 順便說一下,由於某種原因,您的代碼輸出1007小數位而不是1000.

+0

是的,我只是爲了確保精確度。非常感謝:) – GeneralFailure