我必须创建一个代码来查找确切的付款,以及使用二分法在12个月内还清贷款所需的分数。我为此创建的代码有效,但它超出了它的目标。贷款将在12个月内偿还,但在支付12笔款项后,最终余额应为0左右。但这是一个更大的负数。
我使用的代码是:
StartBalance = float(raw_input('Credit Balance in $: '))
AnnualRate = float(raw_input('Annual interest rate in decimals: '))
MonthlyRate = AnnualRate / 12.0
MinPaymentLow = StartBalance / 12.0
MinPaymentHigh = (StartBalance*(1+MonthlyRate)**12.0)/12.0
cent = 0.01
Payment = (MinPaymentHigh+MinPaymentLow)/2.0
while (Payment*12-StartBalance) >= cent:
for month in range(0, 12):
Balance = (StartBalance-Payment)/10*(1+MonthlyRate)
if Balance < 0:
MinPaymentLow = Payment
elif Balance > 0:
MinPaymentHigh = Payment
Payment = (MinPaymentHigh + MinPaymentLow)/ 2.0
print 'RESULT'
print 'Number of months needed: 12'
print 'Montly pay: $', round(Balance,2)
答案 0 :(得分:0)
你的代码似乎对我来说很好,但是如果你得到的结果“离开”,可能是因为你使用的是float
数据类型。浮动是不可信的,因为它在每次操作时都是圆的。如果有足够的迭代次数,你可以获得大量资金。请尝试使用decimal
。此模块将小数跟踪为索引的整数值。
答案 1 :(得分:0)
看起来像这些行:
for month in range(0, 12):
Balance = (StartBalance-Payment)/10*(1+MonthlyRate)
应该是:
Balance = StartBalance
for month in range(0, 12):
Balance = (Balance-Payment) * (1 + MonthlyRate)
或类似的东西,取决于您想要计算利息的方式,以及您是否考虑在月初或月末发生的付款。