On Dec 27, 2007 7:17 PM, Marcelo Barbosa Araujo <[EMAIL PROTECTED]> wrote:
> """
> Calculate compounding interest.
> """
> i = float(interest_rate)/int(periods)
> n = int(periods)*int(years)
> return (((1 + i)**n)*float(principal))
>
> Nesses casos é recomendado fazer TypeCast explícito (int, float, etc)
> e a operação de potência é (**)
> Basicamente, o erro que deu foi pela falta dos ints e floats.

Oi, Barbosa, embora seja boa a sua sugestão de ser explícito nas
conversões, eu não gosto muito deste estilo.

Um outro jeito, ainda seguindo a sua sugestão de ser explícito, ficaria assim:

# garantir os tipos dos dados
principal = float(principal)
interest_rate = float(interest_rate)
periods = int(periods)
years = int(years)

# fazer as contas
i = interest_rate/periods
n = periods*years
return ((i+1)**n)*principal

Eu prefiro assim porque as contas ficam mais fáceis de ler e em muitos
casos a parte de "garantir os tipos dos dados" já está assegurada de
outra maneira no programa.

Agora, o erro que o Adenilton indicou era um erro de sintaxe, e
realmente tinha vários problemas sintáticos no código que ele
reproduziu (tipo uns parenteses voando). Adenilton, se você puder
dizer exatamente de qual livro de Zope você tirou esse exemplo, talvez
alguém que tenha o livro pode te ajudar a conferir o código.

[ ]s
Luciano

Responder a