if (buy >= 1000 && buy < 3000) {
discountedBuy = buy * (5 / 100);
discountedBuy = buy - discountedBuy;
} else if (buy >= 3000 && buy < 5000) {
discountedBuy = buy * (10 / 100);
discountedBuy = buy - discountedBuy;
} else if (buy >= 5000) {
discountedBuy = buy * (15 / 100);
discountedBuy = buy - discountedBuy;
} else {
discountedBuy = buy;
}
Можно проще:
var buy = 4000;
var discountedBuy;
if(buy >= 1000 && buy < 3000){
discountedBuy = buy * 0.95
}else if(buy >= 3000 && buy < 5000){
discountedBuy = buy * 0.9
}else if(buy >= 5000){
discountedBuy = buy * 0.85
}else discountedBuy = buy
switch (true) {
case buy >= 1000 && buy < 3000: discountedBuy = buy * 0.95; break;
case buy >= 3000 && buy < 5000: discountedBuy = buy * 0.9; break;
case buy >= 5000: discountedBuy = buy * 0.85; break;
default: discountedBuy = buy;
}
Мой вариант
var buy = 4000;
var discountedBuy;
var discount = 0;
if (buy >= 1000 && buy < 3000) {
discount = 5;
}
else if (buy >= 3000 && buy < 5000) {
discount = 10;
}
else if (buy >= 5000) {
discount = 15;
}
discountedBuy = buy * (100 - discount)/100;
по сути одно и тоже, только у Kyver’a там ошибка, у него всегда по default’у будут результаты)
вот мое решение /*
var buy = 4000;
var discountedBuy;
if (buy>=1000 && buy<3000){
discountedBuy = buy - (buy / 100 * 5);
} else if (buy>=3000 && buy<5000){
discountedBuy = buy - (buy / 100 * 10);
} else if (buy>=5000){
discountedBuy = buy - (buy / 100 * 15);
} else {
console.log(discountedBuy=buy);
}
*/
твой вариант более симпатичен, нежели мой:+1:
у меня так получилось:
var buy = 4000;
var discountedBuy = buy;
if (buy >= 1000 && buy < 3000) {
discountedBuy = buy * 0.95;
}
if (buy >= 3000 && buy < 5000) {
discountedBuy = buy * 0.90;
}
if (buy >= 5000) {
discountedBuy = buy * 0.85;
}
var buy = 999;
var discountedBuy;
if (buy < 1000) {
console.log('Итого, стоимость ' + (discountedBuy = buy) + 'р.');
}
if (buy >= 1000 && buy < 3000) {
discountedBuy = buy * 0.05
if (discountedBuy = buy - discountedBuy) {
console.log('Итого, стоимость ' + (discountedBuy) + 'р.');
}
}
if (buy >= 3000 && buy < 5000) {
discountedBuy = buy * 0.1
if (discountedBuy = buy - discountedBuy) {
console.log('Итого, стоимость ' + (discountedBuy) + 'р.');
}
}
if (buy >= 5000) {
discountedBuy = buy * 0.15
if (discountedBuy = buy - discountedBuy) {
console.log('Итого, стоимость ' + (discountedBuy) + 'р.');
}
}
Я иначе сделал:
var buy = 4000;
var discountedBuy;
if(buy >= 5000) {
discountedBuy=buy - buy / 100 * 15;
} else if(buy >= 3000) {
discountedBuy=buy - buy / 100 * 10;
} else if(buy >= 1000) {
discountedBuy=buy - buy / 100 * 5;
} else {
discountedBuy=buy;
}
var buy = 4000;
var discountedBuy;
var discount = 1;
if (buy >= 1000 && buy < 3000) {
discount = 0.95;
} else if (buy >= 3000 && buy < 5000) {
discount = 0.9;
} else if (buy >= 5000) {
discount = 0.85;
}
discountedBuy = buy * discount;
Не знаю насколько правильно вышло, но проверку прошёл.
мой вариант:
var discount
if (buy >= 1000 && buy < 3000){discount = 0.05}
else {discount = 0}
if (buy >= 3000 && buy < 5000){discount = 0.1}
if (buy >= 5000){discount = 0.15}
discountedBuy = buy - buy*discount
Но есть вопрос… Почему такая запись не работает?
if (1000 <= buy < 3000){discount = 0.05}
потому что операторы имеют приоритет выполнения.
сначала вычисляется 1000 <= buy
, возвращается например true
а теперь вычисляется true < 3000
.
например, 1000 <= 1000000? (true)
true < 3000? приводим типы: 1 < 3000? (true)
в итоге имеем ошибку. пишите как в первом варианте.
понял, спасибо, иными словами в JavaScript двойные неравенства не работают
Добрый день.
Не могу понять, что не так в коде:
var buy = 4000;
var discountedBuy;
if (buy>=1000 && buy<3000){
discountedBuy=buy-(buy/100*5);}
if else (buy>=3000 && buy<5000){
discountedBuy=buy-(buy/100*10);}
if else (buy>=5000){
discountedBuy=buy-(buy/100*15);}
else {discountedBuy=buy;}
Нашла ошибку, все норм!
У меня так получилось:
var buy = 4000;
var discountedBuy;
if (buy>=1000 && buy<3000){discountedBuy=buy0.95}
else if (buy>=3000 && buy<5000){discountedBuy=buy0.90}
else if (buy>=5000){discountedBuy=buy*0.85}
else {discountedBuy=buy}
var buy = 4000;
var discountedBuy;
if (buy>=1000 && buy<3000){
discountedBuy=buy-(buy/1005);
}
else{
discountedBuy=buy;}
if (buy>=3000 && buy<5000){
discountedBuy=buy-(buy/10010);
}
if (buy>=5000){
discountedBuy=buy-(buy/100*15);
}
Как-то не по феншую получилось. И не понятно почему, если else к последнему IF подписать, то проверку не пройдет…
ну чтоб было по феншую, надо использовать конструкцию else if
а по-умолчанию сделать var discountedBuy = buy;
в ходе условных конструкций из discountedBuy достаточно вычитать размер скидки или же ввести новую переменную discount
и просто её высчитывать, а в конце возвращать buy*discount
По сути, то что я написал (последовательные IF друг за другом) это и есть else if, верно? Просто JS за меня это понял и “дописал” нужное ?