"Деньги к деньгам"

Мой код. Долго мучался с округлением, округляйте в ритёрне:))

var calculateDeposit = function (deposit, percentYear, timeMonth, isCapitalizetion) {

var percentMonth = percentYear/100/12;

if(isCapitalizetion) {
  for(var i=1; i<=timeMonth; i++){
    deposit = deposit*(percentMonth+1);
  }
  return Math.round(deposit);
}   

deposit = (percentMonth * timeMonth + 1) * deposit; 
return Math.round(deposit);

};

calculateDeposit(1000, 10, 12, 1);

Почему в вашем коде при присваивании депозиту нового значения в конце +1?

Тоже сразу не понял зачем +1 пока не попробовал проверть …получается после вычесления процента за месяц percentMonth = percentYear/100/12 получаем значение в сотых долях процента (например 0,01) который при умножении на начальную сумму deposit = depositpercentMonth даст совсем не то значение:
deposit = deposit
percentMonth
, зато когда прибавляем +1 , все суммы считаются правильно.
Хотя наверное это можно другим способом записать, но чет не могу пока придумать)

Потому что при раскрытии скобок получится
deposit*(percentMonth+1) = deposit*percentMonth + deposit...

То есть итоговое уравнение будет таким:
deposit = deposit + deposit*percentMonth;
Хотя можно записать просто вот так:
deposit += deposit*percentMonth;
Просто человек не ищет простых решений)))

Лучше наверно писать функции с одним выходом, у меня получилось вот так:

var calculateDeposit = function (deposit, percentY, periodM, isCapitalization) {
  var percentM = percentY / 1200;
  if (isCapitalization) {
    for (var i = 1; i <= periodM; i ++) {
      deposit += deposit*percentM;
      }
  }
  else {
    deposit += deposit*percentM*periodM;
    }
    deposit = Math.round(deposit);
    return deposit;
};

Сводка ниже

Сводка

const culculatePercent = percent => percent / 12 / 100;

let calculateDeposit = (deposit, percent, months, isCapitalized) => {
  const percentYear = culculatePercent(percent)

  if (isCapitalized) {
    let capDeposit = deposit;
    let sumPercent = 0;
    for (let i = months; i > 0; i--) {
      capDeposit += percentYear * capDeposit;
    }

    return Math.floor(capDeposit);
  }
  
  return Math.floor(percentYear * months * deposit + deposit);
};