python - 在尝试计算每月最低还款额时,我的不断返回有点过高的值

标签 python python-3.x binary-search

在尝试计算最低每月付款时,我的不断返回有点过高的值。我需要使用二分搜索来完成这个问题,但对我来说,使用金融中使用的公式来计算它更有意义。

这是我写的:

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/

相关文章:

python - 如何创建一个只有一个元素的 "singleton"元组

python - 将一年中的几周分开并计算数据框中的平均值

python - 将天数添加到 Pandas 数据框中的日期

Python __call__() 这是一个隐式类方法吗?

java - 使用二分查找查找数字的最大索引出现次数

python - 从列表中获取 "edge numbers"

python - 中止,目标使用 selinux 但未安装 Python 绑定(bind) (libselinux-Python)

Python 3.x : urllib. 请求错误

c# - 当按我搜索的字段排序时,我可以更快地搜索排序的 List<T> 吗?

php - 无法理解 C++ STL 源中的 1 行代码 : Lower_Bound/Upper_Bound