Испытание: От зарплаты до зарплаты

У меня не проходит, так коды проходят у кого-нибудь, или у меня ошибка?

var calculateSalary = function (number) {
var percent = 0.35;
if (number >= 100000) {
percent = 0.45;
}
var sum = Math.floor(number - percent);
return sum;
};

console.log('Чистая зарплата ’ + calculateSalary() );

Даже если переименовать и подставить английскими зарплата, чего-то не проходит.
Переделала по другому, тоже не проходит.

var calculateSalary = function (zarplata) {
if ( zarplata <10000 && zarplata >=0 ) {
var sum = zarplata - zarplata0.35;
}
else if (zarplata > 100000) {
var sum = zarplata - zarplata
0.45;
}

return Math.round(sum);
};

округление нужно обычное, а не вниз
расчет неверный, нужно num * (1 - percent)
вызов функции не нужен

открывать в случае отчаяния
var calculateSalary = function(number) {
  var percent = 0.35;
  if (number >= 100000) {
    percent = 0.45;
  }
  var sum = Math.round(number * (1 - percent))
  console.log('Чистая зарплата ' + sum );
  return sum;
};

Нашла ошибку, нужно 0.35 умножить на number, соответственно 0.45, всё проходит и с этим округлением

var calculateSalary = function (number) {
var percent = 0.35number;
if (number >= 100000) {
percent = 0.45
number;
}
var sum = Math.floor(number - percent);
return sum;
};

Внесу свой вклад

var calculateSalary = function (money) {
if (money < 100000) {
var taxes = Math.round(money35/100);
} else {
var taxes = Math.round(money
45/100);
}
var sum = money - taxes;
return sum;
};
Решил таким образом, жду критики

Давайте и я чуть капну

var calculateSalary = function (dirtyMoney) {
  if (dirtyMoney >= 100000) {
    var goodMoney = Math.round(dirtyMoney * 0.55);
  } else {
    var goodMoney = Math.round(dirtyMoney * 0.65);
  } 
  return goodMoney;
};

Мой вариант:

   var calculateSalary = function (pay) {
        if (pay >= 100000) {
            return Math.round(pay * 0.55)
        }
        return Math.round(pay * 0.65)
    };
1 лайк

var calculateSalary = function (salary) {
var percent = 0.65;
if (salary >= 100000) {
percent = 0.55;
}
var netSalary = Math.round(salary * percent);
return netSalary;
};

calculateSalary();

var calculateSalary = function (salary) {
if(salary >= 100000) {
return Math.round(salary - salary * .45)
} else {
return Math.round(salary - salary * .35)
}
};

Мое решение
var calculateSalary = function (dirty) {
  var white = dirty - (dirty * 0.35);
  if (dirty >= 100000) {
    white = dirty - (dirty * 0.45);
    }
  return white;
};

Моё решение. Сам не ожидал что так красиво выйдет :slight_smile:

function calculateSalary(dirtySalary) {

 if (dirtySalary >= 100000) {
  return Math.floor(dirtySalary * 0.55);
 } 
 return Math.floor(dirtySalary * 0.65);
}

Скажите, пожалуйста, почему данный код проверку не проходит?

var calculateSalary = function (salaryGross) {
var salaryNet = salaryGross * 0.65;
if (salaryGross >= 100000) {
salaryNet = salaryGross * 0.55; //здесь появляется какой-то остаток, которого быть не должно
}
return salaryNet;
};

А вот этот проходит?

var calculateSalary = function (salaryGross) {
var salaryNet = salaryGross * 65 / 100;
if (salaryGross >= 100000) {
salaryNet = salaryGross * 55 / 100;
}
return salaryNet;
};

var calculateSalary = function (greySalary) {
var tax;
var whiteSalary;

if(greySalary>=100000){tax = greySalary0.45;whiteSalary = greySalary - tax;}else{tax = greySalary0.35;whiteSalary = greySalary - tax;}

return whiteSalary;
};

Мой вариант

Сводка

let calculateSalary = function (dirtySalary) {
let tax = 0.35;
if (dirtySalary >= 100000) {
tax = 0.45;
}
let salary = Math.round(dirtySalary-(dirtySalary*tax));
return salary;
};

calculateSalary(66000);

В чем проблема? вроде же правильно(

let calculateSalary = function (whiteSalary) {
let percent = 0.35;
let blackSalary = Math.round(whiteSalary - whiteSalary * percent);
if (whiteSalary >= 100000) {
percent = 0.45;
}

return blackSalary;
};

Вы не правильно рассчитали процентную часть. 35% это налог вы считаете , а не ‘‘чистую зарплату’’, чтобы посчитать ее нужно 100-35=65(ваша з.п.), аналогично со вторым процентом. + вы перепутали понятия + имён зарплаты.

let calculateSalary = function (blackSalary) {
let percent = 0.65;
if (blackSalary >= 100000){
percent = 0.55;
}
let whiteSalary = Math.round(blackSalary* percent);
return whiteSalary ;
};

let salary;
let calculateSalary = function (dirtySalary) {
if (dirtySalary >= 100000) {
salary = Math.round(dirtySalary - (dirtySalary * 45) / 100);
} else {
salary = Math.round(dirtySalary - (dirtySalary * 35) / 100);
}
return (salary);
};

Зачем плодить переменные?

let calculateSalary = function (bruttoSalary) {
  if (bruttoSalary >= 100000) return Math.round(bruttoSalary * 0.55);
  return Math.round(bruttoSalary * 0.65);
};
2 лайка

Мой вариант, хотя наверное уже кто-то такое предлагал:

let calculateSalary = function (dirtySalary) {
let percent = 0.65;
if (dirtySalary>=100000) {
percent=0.55;
};
let cleanSalary = Math.round(dirtySalary*percent);
return cleanSalary;
};

Более локанично, так как у многих в функции повторяется округление и вычисление, хотя от условия меняется только процент.

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