Как написать цикл для расчета сложного процента по вкладу
Никак не могу понять, как написать цикл для расчета.
Пример: сумма вклада 100 000 рублей на год под 10% Срок размещения равен трем месяцам.
(100 000 * 10 * 30 / 365) / 100 - за 1 первый месяц доход = 821 р.
Доходность плюсуется к начальному вкладу.
(100 821 * 10 * 30 / 365) / 100 - за 2 первый месяц доход = 828 р.
(101 649 * 10 * 30 / 365) / 100 - за 3 первый месяц доход = 835 р.
Вот мой черновик:
function calculationINCOME(){
let a = document.getElementById("deposit_amount1"); //сумма вклада
let r = document.getElementById("deposit_rate"); //годовая ставка
let t = document.getElementById("time"); //срок размещения вклада
let d = document.getElementById("days_year"); //число дней в году
let result = 0;
let p = 0; //количество периодов, зависит от переменной t
if(document.getElementsByName("capital")[0].checked){
result = ((a.value * r.value * t.value) / d.value) / 100;
document.getElementById("income").innerText = result.toFixed(2);
} else {
if(document.getElementsByName("period")[0].checked){ //период капитализации 1 месяц
p = Math.round(t.value / 30); //при сроке = 365 p = 12
for(i = 0; i <= p; i++)
{
result += ((a.value * r.value * 30) / d.value) / 100;
}
} else if(document.getElementsByName("period")[1].checked){ //период капитализации 1 квартал
p = Math.round(t.value / 90); //при сроке = 365 p = 4
for(i = 0; i < p; i++)
{
result += ((a.value * r.value * 30) / d.value) / 100;
}
} else if(document.getElementsByName("period")[2].checked){ //период капитализации 1 год
p = Math.round(t.value / 365); //при сроке = 365 p = 1
for(i = 0; i < p; i++)
{
result += ((a.value * r.value * 30) / d.value) / 100;
}
}
document.getElementById("income").innerText = result.toFixed(2);
}
}
Ответы (2 шт):
Автор решения: Elmir
→ Ссылка
Ну если читать ваше ТЗ, то вроде бы так, и ничего сложно. Если я всё правильно понял.
const p = 3;
let start = 100000;
let deposit = start;
let income;
let total = 0;
for (let i = 0; i < p; i++) {
income = (deposit * 10 * 30) / 365 / 100;
deposit += income;
total += income;
console.log(income);
}
console.log(`Сумма вклада: ${start}. Общая сумма дохода: ${total.toFixed(0)}, за ${p} месяца. Итого: ${deposit.toFixed(0)}`);
Автор решения: Алексей Р
→ Ссылка
Исходя из вашей специфики расчета (30 дней в месяце) можно модифицировать формулу сложных процентов, заменив делитель 12 на (365 / 30)
function calculationINCOME(summa, procent, mes) {
return summa * Math.pow(1 + (procent / ((365 / 30) * 100)), mes);
}
let out = {};
[0, 1, 2, 3, 4, 5].forEach((m) => out[m] = (calculationINCOME(100000, 10, m)));
console.log('Вклад с процентами нарастающим итогом:');
console.log(out);
console.log('Доход по месяцам:');
Object.values(out).reduce((acc,cur)=> {
console.log(cur-acc);
return cur;
})