Как ты мне дорог․ HELP


#1

Здравствуйте. Помогите пожалуйста
Возвращает NaN
Подскажите в чем ошибка.

var incomeTax = 18;
var contributions = 37;
var netSalary = 87000;//чистая ЗП;
var calculateExpenses = function (netSalary,incomeTax,contributions) {
  var dirtySalary = netSalary * (incomeTax/(100-incomeTax));//подсчет НДФЛ от грязной ЗП;
  dirtySalary += netSalary;//итого грязная ЗП;
  var costSalary = dirtySalary + (dirtySalary/100 * contributions);//грязная ЗП + общий размер взносов;
  return  Math.round(costSalary);
}

calculateExpenses(netSalary,incomeTax,contributions);


#2

Получилось :))
Оказывается программа работает только с теми параметрами,которые были у меня в редакторе.
Я думал надо работать с неизвестными данными

    var incomeTax = 13;
    var contributions = 30;
    var calculateExpenses = function (netSalary) {
      var dirtySalary = netSalary * (incomeTax/(100-incomeTax));//подсчет НДФЛ от грязной ЗП;
      dirtySalary += netSalary;//итого грязная ЗП;
      var costSalary = dirtySalary + (dirtySalary/100 * contributions);//грязная ЗП + общий размер взносов;
      return  Math.round(costSalary);
    }

#4

var calculateExpenses = function (netSalary) {
var dirtySalary = netSalary / (1 - (incomeTax / 100));//чистая ЗП
var otherContributions = (dirtySalary/100) * contributions;//Взносы
var total = otherContributions + dirtySalary;

return Math.round(total);
};


#5
function calculateExpenses(netSalary) {  
  return Math.round(netSalary / (100 - incomeTax) * 100 * (contributions/100 + 1));
}

#6
var incomeTax = 13;
var contributions = 30;
var calculateExpenses = function(netSalary) {
  var dirtySalary = netSalary / ((100 - incomeTax) / 100);
  return Math.round(dirtySalary + ((dirtySalary / 100) * contributions));
}

#7

var incomeTax = 13;
var contributions = 30;

var calculateExpenses = function(netSalary){
var dirtySalary = (netSalary * 100) / (100 - incomeTax);
var tax = (dirtySalary / 100) * contributions;
return Math.round(dirtySalary + tax);
};


#8

не обязательно вводить дополнительные переменные, в обычную формулу вставляете переменные и все:

var incomeTax = 13;
var contributions = 30;
var calculateExpenses = function(netSalary) {
  return Math.round((netSalary / (100 - incomeTax) * 100) + (netSalary / (100 - incomeTax) * 100) * contributions / 100);
}

#9

Если уж быть кратким,то можно и так)

const calculateExpenses = (netSalary,incomeTax = 13, contributions = 30) => Math.round(netSalary / (100 - incomeTax) * 100 * (contributions/100 + 1));


#10

Сразу видно, нет бухгалтеров в треде =)
Ну а раз я пришел, сейчас вам покажу. Для таких подсчетов обычно используют формулу:

x * (100+30,2)/ (100-13)
т.е. x * 130.2 / 87

где 87 это з/п минус подоходный, т.е. 87%, которые уйдут “на руки”
30.2 это начисления, на з/п, которые платит работодатель за работника (из которых 22% - пенсия (ПФР); 5,1% - медстрах (ОМС); 2,9% - отчисления для безработных и декретных (ФСС) и 0,2% за травматизм (ФСС)),
а х - з/п “на руки”
По условию у Кекса бизнес немного нелегальный, так что за травматизм не платит, остается 30% начислений сверх з/п до подоходного налога.

Также в формуле и в числителе и в знаменателе проценты, потому и сократим дробь на них же.
Итак, наша программа:

вот оно
var calculateExpenses = function(netSalary) {
  var total = Math.round(netSalary / (100 - incomeTax) * (100 + contributions));
  return total;
}