如何计算贷款的月费?
鉴于:
这个问题与通常情况有点不同,因为目标不是在贷款期结束后支付贷款,而是还要欠款。我已经能够找到一个算法,所以如果我想支付全部金额,解决问题,但它当然不适用于这个问题,其目标是最终导致一定数量而不是欠任何东西。
我设法通过猜测开始解决这个问题,然后继续改进猜测,直到它足够接近。然而,我想知道,如果有更好的方法来简单地计算它,而不仅仅是猜测。
编辑:我现在就是这样做的。
def find_payment(start, end, months, interest):
difference = start
guess = int(start / months * interest)
while True:
total = start
for month in range(1, months + 1):
ascribe = total * interest / 12
total = total + ascribe - guess
difference = total - end
# See if the guess was good enough.
if abs(difference) > start * 0.001:
if difference < 0:
if abs(difference) < guess:
print "payment is %s" % guess
return evolution(start, guess, interest, months)
else:
mod = int(abs(difference) / start * guess)
if mod == 0:
mod = 1
guess -= mod
else:
mod = int(difference / start * guess)
if mod == 0:
mod = 1
guess += mod
else:
print "payment is %s" % guess
return evolution(start, guess, interest, months)
进化只是一种功能,可以显示贷款的支付方式和利息利息,总计支付的利息总额等。
一个例子是,如果我想找出一笔贷款的每月付款,起价为10万美元,收益为5万美元,利息为8%,持续时间为70个月,请致电
>>> find_payment(100000, 50000, 70, 0.08)
payment is 1363
在上述情况下,我最终会因为49935而失败,我经历了5次循环。通过循环所需的次数取决于我想要达到的数量,并且它会有所不同。
答案 0 :(得分:10)
这基本上是mortgage repayment calculation。
假设开始大于结束,并且该兴趣在0和1之间(即10%利息为0.1)
首先考虑您想要还清的付款部分。
Principal = start - end
每月付款由:
pay_a = (interest / 12) / (1 - (1+interest/12) ^ (-months))) * Principal
然后您需要考虑额外的兴趣。这等于剩余的每月利息的主要时间
pay_b = interest / 12 * end
所以总付款是
payment = (interest / 12) * (1 / (1 - (1+interest/12) ^ (-months))) * Principal + end)
关于你给出的例子
Start: 100000
End: 50000
Months: 70
Interest: 8%
pay_a = 896.20
pay_b = 333.33
Payment = 1229.54
当我在Excel中测试这些值时,在70次付款后,剩余贷款为50,000。这是假设您在每个月支付之前支付名义利息。
答案 1 :(得分:4)
考虑这个问题最简单的方法可能是将贷款分成两部分,一部分是全额偿还,另一部分是你不付清的部分。您已经计算了第一部分的月费。
答案 2 :(得分:0)
你可以继续支付每个月的利息;那么,你将永远欠下相同的金额。
Owe_1 = a
Int_2 = Owe_1*(InterestRate/12)
Pay_2 = Int_2
Owe_2 = Owe_1 + Int_2 - Pay_2 # ==> Owe_1 + Int_2 - Int_2 = Owe_1
Int_3 = Owe_2*(InterestRate/12)
Pay_3 = Int_3
Owe_3 = Owe_2 + Int_3 - Pay_3 # ==> Owe_2 + Int_3 - Int_3 = Owe_2 = Owe_1
答案 3 :(得分:0)
用于计算emi的python代码
class EMI_CALCULATOR(object):
# Data attributes
# Helps to calculate EMI
Loan_amount = None # assigning none values
Month_Payment = None # assigning none values
Interest_rate = None #assigning none values
Payment_period = None #assigning none values
def get_loan_amount(self):
#get the value of loan amount
self.Loan_amount = input("Enter The Loan amount(in rupees) :")
pass
def get_interest_rate(self):
# get the value of interest rate
self.Interest_rate = input("Enter The Interest rate(in percentage(%)) : ")
pass
def get_payment_period(self):
# get the payment period"
self.Payment_period = input("Enter The Payment period (in month): ")
pass
def calc_interest_rate(self):
# To calculate the interest rate"
self.get_interest_rate()
if self.Interest_rate > 1:
self.Interest_rate = (self.Interest_rate /100.0)
else:
print "You have not entered The interest rate correctly ,please try again "
pass
def calc_emi(self):
# To calculate the EMI"
try:
self.get_loan_amount() #input loan amount
self.get_payment_period() #input payment period
self.calc_interest_rate() #input interest rate and calculate the interest rate
except NameError:
print "You have not entered Loan amount (OR) payment period (OR) interest rate correctly,Please enter and try again. "
try:
self.Month_Payment = (self.Loan_amount*pow((self.Interest_rate/12)+1,
(self.Payment_period))*self.Interest_rate/12)/(pow(self.Interest_rate/12+1,
(self.Payment_period)) - 1)
except ZeroDivisionError:
print "ERROR!! ZERO DIVISION ERROR , Please enter The Interest rate correctly and Try again."
else:
print "Monthly Payment is : %r"%self.Month_Payment
pass
if __name__ == '__main__':# main method
Init = EMI_CALCULATOR() # creating instances
Init.calc_emi() #to calculate EMI
了解更多信息,请访问:https://emilgeorgejames.wordpress.com/2015/07/29/python-emi-equated-monthly-installment-calculator/
答案 4 :(得分:0)
这是一个相当详细的方式,但也会给出全部付款
# Mortgage Loan that gives the balance and total payment per year
# Function that gives the monthly payment
def f1 (principle,annual_interest_rate,duration):
r = annual_interest_rate/1200
n = duration*12
a=principle*r*((1+r)**n)
b= (((1+r)**n)- 1)
if r > 0 :
MonthlyPayment = (a/b)
else :
MonthlyPayment = principle/n
return MonthlyPayment
# Function that gives the balance
def f2 (principle,annual_interest_rate,duration,number_of_payments):
r = annual_interest_rate/1200
n = duration*12
a= ((1+r)**n)
b= ((1+r)**number_of_payments)
c= (((1+r)**n)-1)
if r > 0 :
RemainingLoanBalance = principle*((a-b)/c)
else :
RemainingLoanBalance = principle*(1-(number_of_payments/n))
return RemainingLoanBalance
# Entering the required values
principle=float(input("Enter loan amount: "))
annual_interest_rate=float(input("Enter annual interest rate (percent): "))
duration=int(input("Enter loan duration in years: "))
# Output that returns all useful data needed
print ("LOAN AMOUNT:",principle,"INTEREST RATE (PERCENT):",annual_interest_rate)
print ("DURATION (YEARS):",duration,"MONTHLY PAYMENT:",int(f1(principle,annual_interest_rate,duration)))
k=duration+1
BALANCE=principle
total=0
for i in range (1,k):
TOTALPAYMENT= f1(BALANCE,annual_interest_rate,k-i)*12
total+= TOTALPAYMENT
BALANCE= f2(principle,annual_interest_rate,duration,12*i)
print("YEAR:",i,"BALANCE:",int(BALANCE),"TOTAL PAYMENT",int(total))
答案 5 :(得分:0)
这个怎么样?
override func prepareForResuse() {
profileImage.af_cancelImageRequest
}
答案 6 :(得分:0)
以下是使用numpy函数的代码段。这会显示每月的付款,本金,利息,分期付款和总额。运行它,看看输出。您还可以检查Excel&#34; IPMT()&#34;的语法。和&#34; PPMT()&#34;用于更多解释参数的函数。 https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.pmt.html#numpy.pmt
import math
import numpy as np
rate = 0.08
start_amount = 100000.0
end_amount = 50000.0
diff_amount = start_amount - end_amount
# nr_years = 4
payment_frequency = int (12)
nr_months = 70 # = nr_years * payment_frequency
per_np = np.arange (nr_months) + 1 # +1 because index starts with 1 here
pay_b = rate / payment_frequency * end_amount
ipmt_np = np.ipmt (rate / payment_frequency, per_np, nr_months, diff_amount) - pay_b
ppmt_np = np.ppmt (rate / payment_frequency, per_np, nr_months, diff_amount)
for payment in per_np:
idx = payment - 1
principal = math.fabs (ppmt_np [idx])
start_amount = start_amount - principal
interest = math.fabs (ipmt_np [idx])
instalment = principal + interest
print payment, "\t", principal, "\t", interest, "\t\t", instalment, "\t\t", start_amount
print np.sum (ipmt_np)