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

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

Это было 5 месяцев назад,когда я только изучал js
Тут главное не решить задачу,а понять подход к задаче…
Но это придет со временем и с опытом.
Вот сколько не заставь мозгу понимать все это,все равно нужно время.
Вы поймите синтаксис и как он работает.
Тут нету формул,это просто переменные,в которых копируется значение.

Вы для начала поймите как решить задачу математически.
Потом уже поменяйте значения на переменные и решите задачу еще раз,только уже на языке javascript.
То,что в синтаксисе непонятно,листайте назад,используйте гугл и т.д.

Главное не убивайте 2 зайцев одним выстрелом.
Вы потихонечку начините и развивайте поочередно…

Я вот 3 мес. назад скинул решение уже на ES6

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

Когда 6 месяцев назад еще ничего не понимал и голову ломал.
Так что не переживайте.
Нужно время,мозгу просто нужно время,чтобы реально понимать все это…

мне по сути понятны формулы и код, но именно не понятна логика. видимо бух.учет точно не мое))).

не бух. учет, а арифметика.

острожно, арифметические припадки в виде дробей

у вас есть сумма на руки.
на руки вы получаете деньги уже после налога. значит вы получаете 87% от суммы контракта.
а еще работодатель обязан доплатить взносы в размере 30% от суммы контракта (сверх, из своего кармана).

y = x / 87% ==> получаем сумму контракта, записываем в y.
y * 30% + y ==> получаем полную сумму расходов работодателя
оно же: y * (130%)
делаем подстановку: ( x / 0.87) * 130 / 100
а что такое 0.87? это (100 - incomeTax) / 100.
а что такое 130? это 100 + contributions
Итак: x / ( (100 - incomeTax) / 100 ) * (100 + contributions) / 100

итак дети, кто ходил в школу и умеет переворачивать дроби и выносить за скобку 100?
100 * x / (100 - incomeTax) * (100 + contributions) / 100. охренеть, тут умножаем на сотку и делим на сотку, непорядок:
netSalary / (100 - incomeTax) * (100 + contributions)

я кончил

1 Симпатия

Ребята,чем вы себе голову набивайте…
Любую формулу скачивайте из интернета и переставляя переменные работайте с ней…
Тут не требуют от вас создать программу для себя,которая удобно считала налоги ваших же работников.
Вы будете делать заказы, а не считать налоги.
Еще не поняв одну формулу вам закинут другую и заказ еще стоит,потому,что не понятно как работает эта формула…
А если вы будете работать над созданием портала кредитования?
Да там одни формулы…
На работе не будут требовать у вас знание всего и не использовать гугл.
Да пожалуйста,зайдите в гугл,посмотрите и все…

тссс, а то подписку на курсы не будут покупать =)
ну хочет человек понять логику, вот и всё тут. хочет нативный js, ща покажем. понятно что на практике только и успевай jQuery применять.

я вот реально не знаю JQuery((
сразу React изучил. Но JQuery тоже надо изучить. Старые проекты в основном на нем написаны

а сейчас есть очень жирная прослойка тех, кто оптимизирует старье, для этого и новые фреймворки надо знать и бодренького-старичка jQuery

Вот так вот получилось, жду критики.
function calculateExpences(netSalary) {
var dirtySalary = netSalary / (100 - incomeTax) * 100;
var cost = dirtySalary * (1 + contributions / 100);
return Math.round(cost);
}Текст "как есть" (без применения форматирования)

1 Симпатия

Моё решение:

var incomeTax = 13;
var contributions = 30;

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

let calculateExpenses = Math.round(netSalary*(contributions+100)/(100-incomeTax));

или
let calculateExpenses = netSalary => Math.round(netSalary*1.49425); :smiley:

var incomeTax = 13;
var contributions = 30;

var calculateExpenses = function(netSalary) {
grossSalary = netSalary / (1 - 0.01 * incomeTax);
totalCosts = Math.round((grossSalary / 100 * contributions) + grossSalary);
return totalCosts;
}

Почти 2 года прошло,боже))

Мой код
let incomeTax = 13;
let contributions = 30;

let calculateExpenses = function (netSalary) {
  let darkSalary = netSalary / ((100 - incomeTax) / 100);
  let allContributions = darkSalary * contributions / 100;
  let allCost = Math.round(darkSalary + allContributions);
  return allCost;
  }

@Hierumo у меня вопрос: как произошло сокращение, никак не соображу(((

формула без сокращения должна выглядеть так?

        netSalary                     100 + contributions
----------------------------  *  ------------------------------
  (100 - incomeTax) * 100             100 - incomeTax

если не сокращать, то
netSalary / ( (100 - incomeTax) / 100 ) * (100 + contributions) / 100
вот тут разжевано

1 Симпатия

Дошло)) Спасибо!

Мой вариант

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

Помогите, пожалуйста, разобраться, чего я не понимаю: вроде считаю с калькулятором, логика-то верная, почему функция не считает?
Screenshot_2020-06-24 Функции

Добрый день!
ContributionsAmount b является нужным ответом, так как beforeTax является “грязной зарплатой” (чистая +НДФЛ), к которой вы прибавляете прочие выплаты.