В настоящее время я пытаюсь преобразовать уравнение в листах Google в Javascript, но получаю разные результаты.
Я пытаюсь повторить следующую формулу из здесь :
Исходное уравнение:
F = P*(1+rate)^nper + A*( ((1+rate)^nper - 1)/rate )
Это то, что у меня сейчас есть: (В моем текущем фрагменте кода ниже имена переменных разные)
v = ((p*(Math.pow((1+rate),nper))) + (A*(Math.pow((1+rate),nper - 1))/rate));
Дополнительная информация с исходного сайта:
r = номинальная годовая процентная ставка (десятичная дробь)
n = количество периодов начисления процентов в год
p = число периодов платежей в год
ставка = ставка за период платежей
nper = общее количество периодов платежей
A = сумма, добавляемая к основной сумме в конце каждого платежного периода
rate = ((1 + r / n) ^ (n / p)) - 1
nper= p * t
Общая сумма платежей = A * nper
Общая сумма процентов = F - P - Общая сумма платежей
Полный контекст (My Vue Code):
var app = new Vue({
el: '#app',
data: {
principal: 0,
interest_rate: 0,
time_invested: 0,
additional_investment: 0,
additional_investment_frequency : 1,
options: {
additional_investment_frequency: {
"1": "Yearly",
"12": "Monthly",
"26": "Fortnightly",
"52": "Weekly",
"365": "Daily"
}
},
compound_frequency : 1,
options: {
compound_frequency: {
"1": "Yearly",
"12": "Monthly"
}
}
},
methods:{
},
computed: {
total_pay_periods: function () {
// calculate total number of pay periods
total_pay_periods = parseFloat(this.additional_investment_frequency) * parseFloat(this.time_invested);
return parseFloat(this.additional_investment_frequency) * parseFloat(this.time_invested);
},
total_additional_investment: function () {
// calculate total number of pay periods
total_pay_periods = parseFloat(this.additional_investment_frequency) * parseFloat(this.time_invested);
// times total pay periods by additional investment installment amount to get overall total additional investment
return parseFloat(this.additional_investment) * total_pay_periods;
},
rate: function () {
ir = parseFloat(this.interest_rate) / 100;
cf = parseFloat(this.compound_frequency);
aif = parseFloat(this.additional_investment_frequency);
return (Math.pow((1+ir/cf),(cf/aif))-1);
// return (((1+ir/cf)^(cf/aif))-1);
},
future_value: function () {
p = parseFloat(this.principal);
r = parseFloat(this.rate);
tpp = parseFloat(this.total_pay_periods);
ai = parseFloat(this.additional_investment);
// F = P*(1+rate)^nper + A*( ((1+rate)^nper - 1)/rate )
// https://www.vertex42.com/Calculators/compound-interest-calculator.html#rate-per-period
// calculate final future value
v = ((p*(Math.pow((1+r),tpp))) + (ai*(Math.pow((1+r),tpp - 1))/r));
// convert to 2 decimal places
return v.toFixed(2);
}
}
})