Я только начинаю изучать Python (извините, не требуйте домашнего задания, потому что это не так).Просто чтобы дать себе несколько значимых упражнений, чтобы улучшить синтаксис и функции, я следую за этим URL: http://www.cs.washington.edu/homes/stepp/bridge/2007/exercises.html
Эта конкретная проблема 'переполнения', которую я получаю с некоторыми вычислениями с плавающей запятойпросто мистифицирует меня.
Это сообщение об ошибке, которое я получаю:
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')
Вот мой код:
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
Я все сделал, пытаясь набрать текстinput, чтобы использовать некоторые операции-оболочки для округления или определения точности десятичной точки.Я даже использовал модуль Decimal, чтобы попытаться распечатать десятичное число в строковом формате, чтобы увидеть, где моя логическая ошибка.
Есть ли у кого-нибудь на этот счет, чтобы обучить меня в области вычислений с плавающей запятой в Python?