【发布时间】:2019-09-19 02:29:49
【问题描述】:
在尝试计算每月最低还款额时,my 不断返回的值有点过高。我需要使用二进制搜索来完成这个问题,但对我来说,使用金融中使用的公式来计算它更有意义。
这是我写的:
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)))
【问题讨论】:
-
欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。
-
你看到了什么输出,你期望的输出是什么? 为什么当你有一个直接的“封闭式”公式时,你必须使用二分搜索?如果余额最后是零,你怎么断定打印出来的付款有点太高了?
-
一些基本的故障排除在这里会有所帮助。在您的代码中添加一些打印语句,以便您可以监控变量并遵循流程。请注意您在哪里看到了第一个意外值,您会更好地了解在哪里进行调查。
标签: python python-3.x binary-search