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


#1

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

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);


#2

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


#3

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


#4

Потому что при раскрытии скобок получится
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;
};