От зарплаты до зарплаты. Вопрос по видеообзору

Сама задача проблем не вызвала, решил её следующим образом:

var calculateSalary = function (grossSalary) {
if(grossSalary < 100000) {
var tax = 0.35;
} else {
var tax = 0.45;
}
var salary = grossSalary*(1-tax);
return salary;
};

Затем решил на всякий случай посмотреть видеобзор и тут один момент вызвал вопросы. Лера почему-то совсем не рассматривает случай когда зарплата до вычета налогов будет равна ста тысячам. Проверка в обзоре имеет вид if (grossSalary > 100000), но у нас в условии задачи написано “если грязная зарплата больше или равна 100 тысячам, то налоги составляют уже 45%”, таким образом при grossSalary = 100000 функция вернет неправильное значение. Выходит что проверка должна быть либо if(grossSalary >= 100000) или if(grossSalary < 100000).

1 лайк

Здравствуйте. Вы правы. Действительно, в скринкасте я использую знак «больше», а не« больше или равно».
Спасибо вам за внимательность, в будущем исправим.

Видео объясняет логику решения, то, в какую сторону идти для решения задачи, поэтому маленькие несоответствия задаче не так важны. В данном случае важней понять, как решать подобные задачи, как рефакторить такой код и как писать решения подобных задач проще.

1 лайк

var calculateSalary = function(dirtyAmount) {

if(dirtyAmount <100000){
var calculateSalary = dirtyAmount - (dirtyAmount /100 * 35);

}else {
calculateSalary = dirtyAmount - (dirtyAmount /100 * 45);

}

return calculateSalary;
}
calculateSalary(40000);
я решил вот так.не очень коротко,но зато все понятно с процентами

var calculateSalary = function (salary) {
  if (salary>= 100000) {
    return salary - salary * 0.45;
  } 
  return salary - salary* 0.35;
};
2 лайка
let calculateSalary = function (dirtySalary) {
  let salaryTax = 0.35;
  let cleanSalary = Math.ceil(dirtySalary - (dirtySalary * salaryTax));
  
  if (dirtySalary >= 100000) {
    salaryTax = 0.45;
    cleanSalary = Math.ceil(dirtySalary - (dirtySalary * salaryTax));
    }
  
  return cleanSalary;
};

calculateSalary(40000);

Почему-то до сих пор ни в одном уроке не встречалась запись числа как 10000 = 1e5. Еще в спецификацию языка добавилась поддержка такой записи 10_000. Хорошо бы разобрать данную тему: “Способы записи числа”.

const calculateSalary = function (salary) {
  const BIG_SALARY = 1e5;
  const percentTax = salary >= BIG_SALARY ? 0.55 : 0.65;
  
  return Math.round(salary * percentTax);
};