0

二分探索 (二分探索?) を使用してオンラインの質問を解決しようとしていますが、コードのどこが間違っているのかわかりません。答えは、予想される答えとは少し異なります。コースから外れている場所と、将来への指針を教えていただければ幸いです。年利と初期残高が与えられます。また、セントまでインクリメントできるように、十分に小さいステップを選択することも期待されています。私のコードは次のようなものです:

startbalance = input('Balance: ')
annualInterestRate = input('annualInterestRate: ')
monthlyInterestRate = annualInterestRate / 12.0
balance = startbalance
step = 0.01
lowbound = balance / 12.0
highbound = (balance * (1 + monthlyInterestRate)**12) / 12.0
monthlyPayment = (lowbound + highbound) / 2.0

while (monthlyPayment - balance) >= step:

    for month in range(0, 12):
        balance -= monthlyPayment
        balance = balance + ((1 + monthlyInterestRate) * balance)

    if balance < 0:
        highbound = monthlyPayment
        balance = startbalance
    elif balance > 0:
        lowbound = monthlyPayment
        balance = startbalance

print 'Lowest Payment: ', round(monthlyPayment, 2)

ケースで提供された値を使用してコードをテストすると、次のようになります。

With an annual interest rate of 0.2
and a balance of 320000,
My result: 29591.88 (incorrect, the answer should be 29157.09)

With an annual interest rate of 0.18
and a balance of 999999,
My result: 91484.0 (incorrect, the answer should be 90325.03)

私はほんの少しずれていると思います。まっすぐに設定していただければ幸いです。

ありがとう!

4

1 に答える 1