Мой код. Долго мучался с округлением, округляйте в ритёрне:))
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 = depositpercentMonth
, зато когда прибавляем +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;
};