Использование while-циклов вместо for-loop в Javascript - PullRequest
1 голос
/ 30 апреля 2020

В своем сценарии я использовал for-l oop, чтобы рассчитать процент по сумме денег. Я установил l oop на 20 раз. Теперь я пытаюсь использовать while-l oop вместо этого, чтобы вычислить сумму денег, пока баланс не удвоится.

var btn = document.getElementById('btn');
var startBalance = document.getElementById('input1');
var percentage = document.getElementById('input2');
var output = document.getElementById('result');

btn.onclick = showBalance;

function showBalance() {
    var factor = 1 + percentage.value / 100;
    var newBalance = +startBalance.value * factor;
    var result = "";

    for (var i = 0; i <= 10; i++) {
        result += "Year " + i + ": €";
        result += newBalance.toFixed(2) + "<br>";
        newBalance *= factor;
    }

    output.innerHTML = result;
}

Как мне использовать while-l oop в этом случае? Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Попробуйте это

var btn = document.getElementById('btn');
var startBalance = document.getElementById('input1');
var percentage = document.getElementById('input2');
var output = document.getElementById('result');

btn.onclick = showBalance;

function showBalance() {
        var factor = 1 + percentage.value / 100;
        var startingBalance = startBalance.value;
        var newBalance =+ startingBalance * factor;
        var result = "";
        var i = 0;

   while (newBalance <= startingBalance*2) {
        result += "Year " + i + ": €";
        result += newBalance.toFixed(2) + "<br>";
        newBalance *= factor;
        i++;
    }

    output.innerHTML = result;
}
0 голосов
/ 30 апреля 2020

Вы можете рассчитать необходимые годы с помощью уравнения коэффициент лет = 2 и получить окончательное значение через некоторое время l oop.

var amount = 100,
    factor = 1.02,
    i = 0,
    years = Math.ceil(Math.log(2) / Math.log(factor));

while (i++ < years) amount *= factor;

console.log('years', Math.log(2) / Math.log(factor));
console.log('total', amount);
...