Испытание: Деньги к деньгам (ошибка в четвертой проверке)


Добрый день!
Никак не могу понять в чем ошибка.
Округление до целого числа убирал из цикла, ничего не меняется.
Просмотрел весь форум на эту тему, возможно что-то упустил но не могу понять что именно.
Нужна помощь!

Видимо ошибка в формуле, на калькуляторе получается ответ 101 666.66…
Math.raund округляет до целого, все верно.
Но правильный ответ 101 674.
Пробую исправить.

Summary

var calculateDeposit = function (sum, percent, month, percentSave) {
var allMoney = sum + ((sum / 100) * (percent / 12) * month)
if (percentSave) {
for (var i = 1; i < month; i++) {
return Math.round(allMoney);
}
}
return Math.round(allMoney);
};

Внутри вашего цикла не происходит ничего кроме вывода переменной allMoney, а ведь формулы для расчета величин депозита с капитализацией или без должны отличаться.

1 лайк

Уточню лишь, что return это не вывод, а возврат. И даже если бы в цикле была “какая нибудь формула”, факт наличия return в цикле убивает саму идею цикла, ибо он сразу прекратится на первой итерации

1 лайк

Проанализируйте решения других

Понял! Спасибо большое! Итоговое решение скину.

Вот итоговое решение

Сводка

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