它使用百分比利息的计算方法,该对数方法使用对数来计算本金付款/总利息,以及在给定借款金额和每月还款金额的情况下还清贷款的时间
//FORMULA FOR CALUCLATING INTEREST RATE
//p = x*(1 - (1+r)^-n)/r
var interest = 15, rate = interest/100, principal = 1000, payment = 100, noofpay = 12;
var nper1 = Math.log((1-((principal/payment) * (rate/noofpay))));
var nper2 = Math.log((1+(rate/noofpay)));
nper = -(nper1/nper2);
interestpaid=payment*nper-principal;
nper = -Math.round((nper1/nper2));
nyear=Math.floor(nper/12);
nmonth=nper%12;
if (nper>0)
{
if (nmonth==0)
{
period=nyear+" Year(s)";
}
else
{
period=nyear+" Year(s) and "+nmonth+" Month(s)";
}
}
else
{
period=" Invalid Values ";
interestpaid=0;
}
console.log("Montly Payments: " + period + ", Total Interest Paid: " + interestpaid.toFixed(2));
传入参数的函数:
//the price calculation formula
//@return the price and length of time
function calculate(interest, principal, payment)
{
//get data
var calcElem = $('#calc');
//FORMULA FOR CALUCLATING INTEREST RATE
//p = x*(1 - (1+r)^-n)/r
var rate = interest/100, noofpay = 12;
var nper1 = Math.log((1-((principal/payment) * (rate/noofpay))));
var nper2 = Math.log((1+(rate/noofpay)));
nper = -(nper1/nper2);
interestpaid=payment*nper-principal;
nper = -Math.round((nper1/nper2));
nyear=Math.floor(nper/12);
nmonth=nper%12;
if (nper>0)
{
if (nmonth==0)
{
period=nyear+" Year(s)";
}
else
{
period=nyear+" Year(s) and "+nmonth+" Month(s)";
}
}
else
{
period=" Invalid Values ";
interestpaid=0;
}
//console.log("Montly Payments: " + period + ", Total Interest Paid: " + interestpaid.toFixed(2));
var priceData = {
price : '$'+this.formatCurrency(interestpaid+owe),
interest : '$'+this.formatCurrency(interestpaid),
time : period
}
return priceData;
}
From: https://www.sitepoint.com/javascript-interest-loan-calculator-algorithm/