Основы JavaScript 5/21 Восьмая программа: «Деньги к деньгам»

Всем привет ) выполняя задание столкнулся со странностью которую не могу понять. Ниже приведен результат работы функции.

Результат работы функции calculateDeposit равный 101673 не совпадает с ожидаемым значением 101674 .

Сама функция:

var calculateDeposit = function (deposit, percent, time, isMoneyStay) {
if (!isMoneyStay){
deposit = Math.round(deposit + ((deposit * ((percent / 12) * time)) / 100));
}
else {
for (var i = 1; i <= time; i++){
deposit = Math.round(deposit + ((percent / 100) / 12) * deposit);
}
}
return deposit;
};

Так вот вопрос почему есть разница в результатах на 1 ? это ошибка в моем коде или ошибка в прописаны результатах теста ?

Это ваша ошибка. В цикле вы округляете значение deposit на каждой итерации, а должны округлить только последний результат. Потому и набегает эта разница на 1.

1 лайк

Спасибо огромное ) действительно после того как я обернул return Math.round(deposit); все заработало корректно.

Финальный код:

var calculateDeposit = function (deposit, percent, time, isMoneyStay) {
if (!isMoneyStay){
deposit = deposit + ((deposit * ((percent / 12) * time)) / 100);
}
else {
for (var i = 1; i <= time; i++){
deposit = deposit + ((percent / 100) / 12) * deposit;
}
}
return Math.round(deposit);
};