2013-06-03 13 views
6

Próbuję obliczyć pi z dowolną precyzją na Pythonie za pomocą jednej z formuł Ramanujana: http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century. Zasadniczo wymaga wielu silni i precyzyjnego podziału liczb zmiennoprzecinkowych.Obliczanie wartości dziesiętnej na Pythonie

Oto mój kod do tej pory: http://pastie.org/private/pa6ijmoowiwiw4xwiqmq

Dostaję błąd gdzieś około piętnastego cyfrze PI (3.1415926535897930 i powinno być +3,1415926535897932). Czy możesz udzielić porady, dlaczego to się dzieje? Używam typu dziesiętnego, a dokumenty mówią, że pozwala to na dowolną precyzję liczb zmiennoprzecinkowych i całkowitych.

PS: To zadanie domowe, więc nie mogę użyć innej formuły. PSS: Używam Python 2.7

Thanks :)

+2

Czy zdajesz sobie sprawę, że 'Dziesiętny (sqrt (2))' jest po prostu skomplikowanym sposobem zrobienia 'sqrt (2)' bez "Dziesiętny"? Spróbuj z 'Decimal (2) .sqrt()' – Bakuriu

Odpowiedz

3

Wpisz Decimal(2).sqrt() zamiast Decimal(sqrt(2)).

Sprawdziłem pierwsze 1000 cyfr i wygląda na to, że działa dobrze. Nawiasem mówiąc, z jakiegoś powodu twój kod wyprowadza 1007 miejsc dziesiętnych zamiast 1000.

+0

Yup i dodać precyzję tylko dla pewności. Wielkie dzięki:) – GeneralFailure

Powiązane problemy