用二分搜索法确定

2024-09-26 22:55:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经发布了另一个线程,但它没有收到答案,因此我试图提供一些我的工作,以使更清楚。

我需要用平分法来确定月供,以便准确地在一年内还清债务。

下面是一些代码:

originalBalance = 320000
annualInterestRate = 0.2
monthly_interest = annualInterestRate / 12
low = originalBalance/12
high = (originalBalance*(1 + monthly_interest)**12)/12
epsilon = 0.01
min_payment = (high + low)/2.0

while min_payment*12 - originalBalance >= epsilon:
    for month in range(0, 12):
        balance = (originalBalance - min_payment) * (1+monthly_interest)

    if balance < 0:
        low = min_payment
    elif balance > 0:
        high = min_payment
        min_payment = (high + low)/2.0
print "lowest payment: " + str(balance)

然而,我得到的答案却很离谱:298222.173851

我朋友告诉我正确答案是:29157.09

这比我的要低很多…我想问题在于四舍五入(我还没有这么做)以及在每次循环后保持平衡,如果平衡超过0,则重置平衡。我不知道该怎么解决这个问题,请帮助别人:)


Tags: 答案代码paymentmin线程lowbalancehigh

热门问题