В вашем текущем коде tip
не присваивается до тех пор, пока if (bill...
не проверит внутри calculator
, ниже присвоения finalBill
.Присвойте finalBill
после , создав вместо этого tip
, что не только не приведет к NaN
с, но также даст вам точные результаты (ваши текущие советы для каждогосчет рассчитывается на основе чаевых предыдущего счета, а не текущего счета):
var tipsArray = [];
var finalBillArray = [];
function calculator(bill) {
var tip;
var finalBill;
if (bill < 50) {
tip = bill * 0.2;
} else if (bill >= 50 && bill <= 200) {
tip = bill * 0.15;
} else {
tip = bill * 0.1;
}
tipsArray.push(tip);
finalBill = tip + bill;
finalBillArray.push(finalBill);
}
calculator(124);
calculator(48);
calculator(268);
console.log(tipsArray);
console.log(finalBillArray);
Если вам не нравятся числа с плавающей точкой, вы также можете использовать Math.round
;Math.round(tip * 100) / 100;
округляется до 2 десятичных знаков.(Если вам не нужен номер, вы можете использовать toFixed(2)
, что проще)
var tipsArray = [];
var finalBillArray = [];
function calculator(bill) {
var tip;
var finalBill;
if (bill < 50) {
tip = bill * 0.2;
} else if (bill >= 50 && bill <= 200) {
tip = bill * 0.15;
} else {
tip = bill * 0.1;
}
tip = Math.round(tip * 100) / 100;
tipsArray.push(tip);
finalBill = tip + bill;
finalBillArray.push(finalBill);
}
calculator(124);
calculator(48);
calculator(268);
console.log(tipsArray);
console.log(finalBillArray);