Сложные проценты JS
Есть код, который возвращает массив с целями по количеству производимого товара за месяц. По сути просто сложные проценты . Код работает , но после 4 - 5 вычислений начинает давать погрешность. Не знаю как исправить. Жду вашу помощь))
function getPlan(currentProduction, months, percent) {
let result = [];
for (let i = 1; i <= months; i++) {
result.push(Math.floor(currentProduction * (((100 + percent) / 100)) ** i));
}
return result;
}
console.log(getPlan(1000, 6, 30));
Test 3 failed input:
currentProduction = 1000, months = 6, percent = 30,
expected output: [1300, 1690, 2197, 2856, 3712, 4825]
Expected: [ 1300, 1690, 2197, 2856, 3712, 4825 ]
Received: [ 1300, 1690, 2197, 2856, 3712, 4826 ]
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
Они округляют вниз на каждом шаге и используют значение предыдущего месяца для вычисления следующего.
function getPlan(currentProduction, months, percent) {
let result = [];
var factor = 1 + percent / 100;
result.push(Math.floor(currentProduction * factor));
for (let i = 1; i < months; i++) {
var v = result[i - 1] * factor;
result.push(Math.floor(v));
}
return result;
}
console.log(getPlan(1000, 6, 30));
Автор решения: Mykola Kikets
→ Ссылка
Ок.
Во первых, добро пожаловать на ru.stackoverflow
Во вторых, немного не успел, @Igor опередил но все же... Моя версия такова:
function getPlan(currentProduction, months, percent) {
// write code here
let result = [];
let fixed_percentage = ((100 + percent)/100);
for(let i = 1; i <= months; i++){
result.push(currentProduction=Math.floor(currentProduction*fixed_percentage));
}
return result;
}