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

Ну раз сокращать, то тогда уже можно и так :grinning::

Summary

const calculateSalary = money => money * (money >= 100000 ? 0.55 : 0.65);

2 Симпатий

Пока без всяких сокращений, топорно по аналогии с теорией :face_with_raised_eyebrow:

От зарплаты до зарплаты
var calculateSalary = function (blackPay) {
  var taxes = 0.35;
  if (blackPay >= 100000) {
    taxes = 0.45;
  }
  var whitePay = blackPay - blackPay * taxes;
  return whitePay;
};
1 Симпатия

мои 5 копеек

var calculateSalary = function (salaryBeforeTax) {

if (salaryBeforeTax >= 100000) {

var taxes = 0.45;

} else {
  
taxes = 0.35;

}

  var taxesInMoney = salaryBeforeTax * taxes;

  var salaryAfterTaxes = salaryBeforeTax - taxesInMoney;

  return salaryAfterTaxes`

};

calculateSalary(40000);

P.S. почему-то форматирование не получилось, изивините.

внесу лепту на форум =)

моё рабочее
var calculateSalary = function (zarplata) {
  if (zarplata < 100000 && zarplata >= 0) {
    var sum = zarplata*(1-35/100);
  }
  if (zarplata >= 100000) {
    var sum = zarplata*(1-45/100);
  }
  return Math.round(sum);
};

Объясните плиз, как вылезает нанокопейка при перемножении 100000 * 0.55?
это особенности JS?

https://learn.javascript.ru/number#netochnye-vychisleniya

2 Симпатий

В техзадании могли бы и подсказать, как правильно называть переменные с зарплатой. А то я через гугл-переводчика получил “dirty salary” и “net salary” :slight_smile: . А остальное - плёвое дело.

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

Подскажите пожалуйста, что не так?
У меня не проходит ( Результат функции calculateSalary равен 65000 и не совпадает с ожидаемым значением

Грязная зарплата 120000 рублей, ожидаю чистую зарплату 66000 рублей.)

var calculateSalary = function (dirtySalary) {
var salary;
if(dirtySalary <= 100000) {
salary = dirtySalary * 0.65;
}else{
salary = dirtySalary * 0.55;
}
return Math.round(salary);
};

if (dirtySalary <= 100000)
тут ошибка

Спойлер на случай если не разберетесь

уберите равно

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

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

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)
    };

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);
}