Python 2 Division - PullRequest
       6

Python 2 Division

1 голос
/ 03 января 2012
#this works in python 3
def pi_sum(n):
    total, k = 0,1
    while k <= n:
        total, k = total +8 /(k *(k+2)), k + 4
    return total

#this is how i tried to fix it for python 2
def pi_sum2(n):
    total, k = 0,1
    while k <= n:
        total, k = float(total +8) /(k *(k+2)), k + 4
    return total

В питоне 2: для pi_sum2(1e6) я получаю 8.000032000112001e-12.Что здесь не так?

РЕДАКТИРОВАТЬ выше моей первой ошибки было применение float как к итоговому, так и к 8 .. я должен был сделать:

1 Ответ

1 голос
/ 03 января 2012

Вы должны явно определить свои переменные как числа с плавающей точкой, чтобы избежать некоторого приведения типов:

def pi_sum(n):
    total, k = 0.0, 1.0
    while k <= n:
        total, k = total + 8.0 /(k *(k+2)), k + 4
    return total

должно помочь

...