我有一个程序,每次使用它时都会出现溢出错误。这是抵押贷款利息计算器计划。
global t
t = 0
def time_until_last_payment():
global a
global b
global c
global d
a = float(input('what is the current mortage on the house? '))
b = float(input('what is the current interest rate? please give it in percent but do not add the percent sign. '))
c = float(input('what is the monthly payment? '))
d = float(input('how many installments do you pay a year? '))
b = b/100
while a > 0:
global t
a = (a*(1+b/d)**(d*t/12))+a
a = a - c
t = t + 1
print(t)
time_until_last_payment()
并且出现溢出错误:
a = (a*(1+b/d)**(d*t/12))+a
答案 0 :(得分:0)
溢出错误是因为您的应计计算错误。换句话说,公式是不正确的,正确的公式要简单得多。每个月t
未结资本 a
每年增加年度利息 b
除以每年的利息期 d
:
a = a*(b/d) + a
在通过付款c
缩减之前:
a = a - c
您的代码中的公式似乎会混淆多个期间的复利计算与您的计划尝试执行的操作,即计算一个期间的简单利息。
当您收到类似这样的错误时,最有用的方法是在计算后立即调用print()
来打印出中间结果。这会立即向您显示您a
的价值正在急剧增加而不是像您预期的那样缓慢下降。
错误消息甚至指出了错误的行。当发生这种情况时,您需要手动检查计算,并且只使用一个这样的计算程序,这很快就能完成。
您的“每月付款”提示包括假设下一个问题的答案“每年分期付款”将始终为12个。