Он использует расчет% процентов, который использует логарифмы для расчета принципа выплаты / общей суммы процентов и того, сколько времени потребуется для погашения кредита с учетом суммы займа и суммы ежемесячного платежа.
//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;
}