在尝试计算最低每月付款时,我的不断返回有点过高的值。我需要使用二分搜索来完成这个问题,但对我来说,使用金融中使用的公式来计算它更有意义。
这是我写的:
balance = 101
annualInterestRate = 0.2
MIR = (annualInterestRate/12)+1
minpmt = balance/12
maxpmt =( balance*(MIR)**12)/12
pmt = ((minpmt+maxpmt)/2)
while balance>= float(.01):
for month in range (0,12):
balance =-pmt
balance = balance*MIR
if balance < 0:
maxpmt = pmt
if balance >0:
minpmt = pmt
pmt = ((minpmt+maxpmt)/2)
print("Lowest Payment: " + str(round(pmt,2)))
最佳答案
您最大的问题是您在及时还清贷款的第一笔付款金额时就退出了:我认为您需要接近,而不仅仅是支付足够的钱。
while abs(balance) >= float(.01):
接下来,您忘记在每次迭代中重置您的贷款金额。给定合理的第一个近似值,您在付款时永远不会进行两次以上的猜测:第二次猜测的余额从第一次猜测的结束余额开始。您必须在每次计算时重置它。
但是,您最严重的错误是扣除当月付款时的拼写错误:
balance =-pmt # You set balance to the negative of the payment. OOPS!
尝试减少:
balance -= pmt
关于python - 在尝试计算每月最低还款额时,我的不断返回有点过高的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998582/