Мне интересно, что не так с моим кодом.Я разделил верхнюю и нижнюю границу.Я схожу с цента каждый раз.
Я разделяю верхнюю границу.
def get_credit_exact_pay(balance, annualInterestRate):
monthly_interest_rate = round(annualInterestRate/12, 2)
upper_x = balance
lower_x = balance
lower_payment = round(balance/12,2)
upper_payment = round((balance * (1 + monthly_interest_rate) ** 12) / 12, 2)
Мне кажется, я упустил еще одну вещь, касающуюся математики при расчете платежа или прироста платежа.
count = 0
while True:
upper_x -= upper_payment
interest = (annualInterestRate/12.0) * upper_x
upper_x += interest
lower_x -= lower_payment
interest = (annualInterestRate/12.0) * lower_x
lower_x += interest
if count == 11:
if lower_x < lower_payment and lower_x > 0:
print('l')
print ("%.2f" % lower_payment)
break
if upper_x < upper_payment and upper_x > 0:
print ("%.2f" % upper_payment)
break
count = 0
upper_x = balance
lower_x = balance
upper_payment -= .01
lower_payment += .01
continue
else:
if lower_x < 0:
lower_x = balance/2
if upper_x < 0:
upper_x = balance/2
count += 1
continue