私は、1年以内に残高を支払うために最低限必要な最低限の支払いを行うことになっているコードを持っています。それはここでは(今のところ、私がテストしてきたように)772000000000000.なぜ数値が772000000000000以上であれば、私のPythonコードは無限ループになりますか?
までのすべての数字のために完璧に動作するコード(私がテストした数字は、その結果を以下の通り)である:私が言ったように
import time
balance = float(input("balance: "))
annualInterestRate = float(input("AIR: "))
# formulas for lower and higher binding for bisectional search
monthlyInterestRate = annualInterestRate/12
lower = balance/12
higher = (balance * (1 + monthlyInterestRate) ** 12)/12
while True:
guess = ((higher - lower)/2 + lower)
print('higher: %s' % higher)
print('lower: %s' % lower)
remaining = balance
for i in range(12):
unpaid = remaining - guess
remaining = unpaid + monthlyInterestRate*unpaid
if higher - lower <= .01 and remaining < 0:
result = lower
print("Lowest Payment: %s" % result)
break
elif higher - lower <= .01 and remaining >= 0:
result = higher
print("Lowest Payment: %s" % result)
break
elif remaining < -0.01:
higher = guess
print("remaining: %s" % remaining)
print(guess)
print('too high')
time.sleep(.5)
elif remaining > 0:
lower = guess
print("remaining: %s" % remaining)
print(guess)
print('too low')
time.sleep(.5)
、テストしたすべての数値に対して正しい結果が得られましたが、テストしましたが、999999999999999と無限ループが発生しました。次の値をすべてAIRとして使用し、異なるAIRを使用して異なる値をテストすることで、数字によっても同様の結果が得られますが、次のようにすれば、何が起こっているのかを知ることができます:
6620 00000000000作品
771999999999999作品いくつかの時間後に何度も何度も
772000000000000繰り返し上位と下位
772100000000000作品いくつかの時間後に何度も何度も
772200000000000繰り返し上位と下位
772300000000000無限ループ
772400000000000 infini TEループ
772500000000000無限ループ
882100000000000無限ループ
999999999999999無限ループ
は自分でしようと気軽になぜこれが起こっている、私は完全に唖然ですか?
それがうまくいった!あなたは聖人です、ありがとう!私はそれが起こることさえ知りませんでした。 – Cdhippen