Что с вашим редактором +100500 раз проверил код аналогичен, но не работает ? при в кладе с капитализацией на 2 месяца
var calculateDeposit = function (initialAmount, simplePercent, duration, complexPercent) {
var totalDeposit;
var profit=0;
if (complexPercent) {
for (var i=0; i<duration; i++) {
profit= (simplePercent/12*0.01)*initialAmount;
initialAmount+=profit;
return Math.round(initialAmount);
Подскажите пожалуйста что не так. (Результат работы функции calculateDeposit равный undefined не совпадает с ожидаемым значением 101000.), хотя результаты совпадают
Стрелочные функции решают отдельные задачи, которые перед нами пока не стоят, поэтому их время ещё не пришло)
Тем более мы пока пишем на ES5, а стрелочные функции ES6
Подскажите пожалуйста, что я делаю не так.
Написал такой код:
var calculateDeposit = function (deposit, percent, time, isCapitalize) {
if (isCapitalize) {
for (var i=1; i <= time; i++) {
deposit = Math.round(deposit + (percent / 12) * deposit);
}
return deposit;
}
else {
var allPercent = (percent / 12) * time * deposit;
var result = Math.round(deposit + allPercent);
}
console.log(result);
return result;
};
Проверяю результаты работы консоль логами и вызовом функции с нужными аргументами, результаты верные, и соответствуют ответам к задаче. Но когда запускаю проверку Кексом, то мне выдаёт какие-то сумасшедшие цифры, хотя консолью я проверил все значения, и они совпадают с ответами.
var calculateDeposit = function (initialAmount, percent, time, withCapitalization ) {
var finalAmount = initialAmount;
if (withCapitalization) {
for (var i = 0; i < time; i++) {
finalAmount*=(percent/12+100)/100;
}
}
else {
finalAmount*=(percent*time/12+100)/100;
}
finalAmount = Math.round(finalAmount);
return finalAmount;
};
как-то так
var calculateDeposit = function (dep, pr, per, isK) {
var x = 0;
if (!isK) {
x = (pr / 12 * 0.01) * per * dep;
}
if (isK) {
for (var i = 1; i <= per; i++) {
x += (pr / 12 * 0.01) * (dep + x)
}
}
return Math.round(x + dep);
};
Такие же результаты если беру любой другой код из ответов выше.
Не проходит конкретно вот здесь:
Например, берем первую из этих проверок:
Капитализации нет, процент годовой - 10%, срок 2 месяца.
10% / 12 = 8,333333333…, далее умножаем на 2 месяца: 8,333333333 * 2 = 1,66666666667…
Естественно Math.round() округлит в большу сторону, т.е. последняя цыфра будет 7, а не 6.
Наверное здесь какие то заковырки с js…
Раньше там в ТЗ Math.round был, теперь Math.floor. вроде решит ваш вопрос. Нейминг у вас дичь конечно =)
и еще, зачем вводить абстракцию в виде x, чтобы на выводе все равно получать не её, а абстракция + депозит?
не проще ли было переписать локальную переменную?
например вот так
var calculateDeposit = function (dep, pr, per, isK) {
if (!isK) {
dep += pr / 12 / 100 * per * dep;
}
if (isK) {
for (var i = 1; i <= per; i++) {
dep += pr / 12 / 100 * dep;
}
}
return Math.floor(dep);
};