2014-01-12 3 views
4

я работал над проектом, чтобы вычислить приближение Лейбница для пи с кодом ниже:Повышение точности с плавающей точкой в ​​Python

def pi(precision): 
    sign = True 
    ret = 0 
    for i in range(1,precision+1): 
     odd = 2 * i - 1 
     if sign: 
      ret += 1.0/odd 
     else: 
      ret -= 1.0/odd 
     sign = not sign 
    return ret 

Однако, выходное значение всегда была длиной 12 цифр. Как повысить точность (например, больше цифр) вычисления? Поддерживает ли Python более точные плавающие точки, или мне придется использовать некоторую внешнюю библиотеку?

+0

Какое странное значение для pi: '' >>> repr (pi (17)) '' дает '' '0.8000913788523872''' – alko

+0

@alko Да, это приблизительно четверть пи. см. здесь: http://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80 – hkk

+0

Какой странный метод оценки pi, он сходится ** так медленно **. – alko

ответ

3

С поплавком Python вы получаете 15-17 цифр точности (если вы видите меньше, вам может понадобиться использовать другой формат для печати).

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

См Python floating point arbitrary precision available?

+2

12 почти sertanly является сырым результатом печати, 'float .__ str__' выравнивает до 12 цифр. – alko

4

Формула Лейбница сходится очень медленно - честно, вы не будете жить достаточно долго для того, получить 12 цифр точности. Click here для того, чтобы ускорить его.

Смежные вопросы