Ich fange gerade an, Python zu lernen (Sorry, ich behaupte nicht, dass es sich dabei um Hausaufgaben handelt, denn das ist es nicht). Um mir selbst ein paar sinnvolle Übungen zu geben, um besser mit der Syntax und den Funktionen zurechtzukommen, habe ich diese URL verfolgt: http://www.cs.washington.edu/homes/stepp/bridge/2007/exercises.html
Dieses spezielle "Überlauf"-Problem, das ich bei einigen Fließkommaberechnungen erhalte, gibt mir Rätsel auf.
Diese Fehlermeldung erhalte ich:
Traceback (most recent call last):
File "./lab0102.py", line 28, in <module>
payment = PMT(r, n, P)
File "./lab0102.py", line 19, in PMT
return round(P * ((r *((1+r)**num_pmts)) / ((1+r)**num_pmts)))
OverflowError: (34, 'Numerical result out of range')
Hier ist mein Code:
import math
#from decimal import Decimal
def PMT(r, n, P):
rate = (r/100)/12
print "rate:", rate
num_pmts = n*12
payment = P * ((r *((1+r)**num_pmts)) / ((1+r)**num_pmts))
return payment
print "This program computes monthly loan payments."
P = input("Loan Amount? ")
n = input("Number of Years? ")
r = input("Interest Rate? ")
payment = PMT(r, n, P)
print "You payment is", payment
Ich habe alles getan, indem ich versucht habe, die Eingabe zu typisieren, einige der Wrapper-Operationen zum Runden oder zur Angabe der Dezimalpunktgenauigkeit zu verwenden. Ich habe sogar das Decimal-Modul verwendet, um zu versuchen, die Dezimalzahl im String-Format auszudrucken, um zu sehen, wo mein Logikfehler liegt.
Irgendwelche Leute, die mich in den Bereich der Fließkommaberechnungen in Python einweisen können?