I'm trying to work on a script where the user inserts a monthly income and gets the future value with compound interest after 30 years. As it is now, I've assigned some values for testing purposes.
// Future Value
var investment = 800;
var annualRate = 2;
var monthlyRate = annualRate / 12 / 100;
var years = 30;
var months = years * 12;
var futureValue = 0;
for ( i = 1; i <= months; i++ ) {
futureValue = futureValue + investment * Math.pow(1 + monthlyRate, months);
}
Problem is, I'm actually building this from an Excel spreadsheet that's using the built-in FV() formula and when cross checking, my results are totally off... Any idea what I'm doing wrong since I'm not into finance math at all. Thanks in advance.
The Math.pow
is unnecessary, since you are calculating and incrementing futureValue
month by month. Simply multiply by 1 + monthlyRate
. You also want to add the current value of the investment to the new investment before multiplying:
for ( i = 1; i <= months; i++ ) {
futureValue = (futureValue + investment) * (1 + monthlyRate);
}
Alternatively, you can also calculate this in one go with the following formula:
futureValue = investment * (Math.pow(1 + monthlyRate, months) - 1) / monthlyRate;
function FVcalc(PresentAmount,InterestRate,NumberOfYears) {
var timescompound = 1;
var AnnualInterestRate = (InterestRate/100)/timescompound;
var Years= NumberOfYears
var Periods=timescompound*Years;
var NumPayments=Periods;
var Prin=PresentAmount;
MonthPayment=Math.floor((Prin)*(Math.pow((1+AnnualInterestRate),(Periods)))*100)/100;
FVFactor=(Math.pow((1+AnnualInterestRate),(Periods)))
return MonthPayment
}
This is my way of writing code for compound interest
function call()
{
var A = Principle;
var B = Interest;
var C = Years;
var D = 0;
var E = A*B/100;
D+=E;
var f=E+A;
document.write("0 year: Interest "+E+" Principal: "+f);
document.write("<br />");
for (var i=1; i<C; i++)
{
E=f*B/100;
D+=E;
f=E+f;
document.write(i+"year: Interest "+E+" Principal:"+f);
document.write("<br />");
}
return false;
}
Also I found with this alternative:
function compoundInterest(principal, annual_rate, n_times, t_years) {
return principal*(Math.pow(1 + annual_rate/n_times, n_times*t_years) - 1);
}
来源:https://stackoverflow.com/questions/4712585/calculating-future-value-with-compound-interest-with-javascript