Вычисление числа Пи с десятичным числом на Python

Я пытаюсь вычислить число пи с произвольной точностью на Python, используя одну из формул Рамануджана: ://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_centre. В основном это требует большого количества факториалов и высокоточного деления чисел с плавающей запятой.

Вот мой код: http://pastie.org/private/pa6ijmoowiwiw4xwiqmq

Я получаю ошибку где-то около пятнадцатой цифры числа пи (3.1415926535897930, а должно быть 3.1415926535897932). Можете дать совет, почему так происходит? Я использую десятичный тип, и в документах говорится, что он допускает плавающие и целые числа произвольной точности.

PS: Это домашнее задание, поэтому я не могу использовать другую формулу. PSS: я использую Python 2.7

Спасибо:)


person GeneralFailure    schedule 03.06.2013    source источник
comment
Вы понимаете, что Decimal(sqrt(2)) — это просто сложный способ выполнения sqrt(2) без Decimal? Попробуйте с Decimal(2).sqrt()   -  person Bakuriu    schedule 03.06.2013


Ответы (1)


Используйте Decimal(2).sqrt() вместо Decimal(sqrt(2)).

Я проверил первые 1000 цифр, и, похоже, все работает нормально. Кстати, по какой-то причине ваш код выводит 1007 знаков после запятой вместо 1000.

person kirelagin    schedule 03.06.2013
comment
Да, я добавляю точность, чтобы быть уверенным. Большое спасибо:) - person GeneralFailure; 03.06.2013