Треки
/
JavaScript
JavaScript
/
Вправи
/
Ставки фрилансера
Ставки фрилансера

Ставки фрилансера

Навчальна вправа

Вступ

Числа

Багато мов програмування мають окремі числові типи для різних видів чисел, але в JavaScript їх лише два:

  • number: числовий тип даних у форматі 64-бітного числа з плаваючою комою подвійної точності (IEEE 754). Наприклад: -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 та 500000.
  • bigint: числовий тип даних, який може представляти цілі числа у форматі довільної точності. Наприклад: -12n, 0n, 4n та 9007199254740991n.

Якщо нам потрібна довільна точність або доводиться працювати з надзвичайно великими числами, використаймо тип bigint. Інакше тип number, найімовірніше, буде кращим вибором.

Округлення

Є вбудований глобальний обʼєкт Math, який надає різні функції округлення. Наприклад, ми можемо округлити десяткові числа вниз (floor) або вгору (ceil) до найближчого цілого числа.

Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235

Арифметичні оператори

JavaScript надає 6 різних операторів для виконання базових арифметичних дій над числами.

  • +: оператор додавання використовується, щоб знайти суму чисел.
  • -: оператор віднімання використовується, щоб знайти різницю між двома числами
  • *: оператор множення використовується, щоб знайти добуток двох чисел.
  • /: оператор ділення використовується, щоб поділити два числа.
2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
  • %: оператор остачі (від ділення) використовується, щоб знайти остачу від виконаного ділення.

    40 % 4; // => 0
    -11 % 4; // => -3
    
  • **: оператор піднесення до степеня використовується, щоб піднести число до степеня.

    4 ** 3; // => 64
    4 ** 1 / 2; // => 2
    

Порядок виконання операцій

Коли в одному рядку використовується кілька операторів, JavaScript дотримується порядку старшинства, показаного в цій таблиці старшинства. Якщо спростити це для нашого контексту, JavaScript використовує правило PEDMAS (дужки, степені, ділення/множення, додавання/віднімання), яке ми вивчали на уроках елементарної математики.

const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45

Скорочені оператори присвоєння

Скорочені оператори присвоєння - це коротший спосіб записати код, який виконує арифметичні дії над змінною та присвоює нове значення тій самій змінній. Наприклад, розгляньмо дві змінні x та y. Тоді x += y - те саме, що x = x + y. Часто це використовують із числом замість змінної y. Решту 5 операцій також можна виконувати в подібний спосіб.

let x = 5;
x += 25; // x is now 30

let y = 31;
y %= 3; // y is now 1

Вказівки

У цій вправі ми будемо писати код, який допоможе фрилансеру спілкуватися з клієнтами про ціни на певні проєкти. Ми напишемо кілька допоміжних функцій, щоб швидко розраховувати вартість для клієнтів.

Note

Змінна ratePerHour і функція dayRate стосуються грошей. Ми вимірюємо гроші за одиницю часу: відповідно за годину та за день.

1. Розрахуйте денну ставку на основі погодинної ставки

Клієнт звертається до фрилансера, щоб дізнатися про його ставки. Фрилансер пояснює, що працює 8 годин на день. Однак фрилансер знає лише погодинні ставки на проєкт. Допоможіть йому оцінити денну ставку на основі погодинної ставки.

dayRate(89);
// => 712

Денну ставку не потрібно округлювати чи приводити до «фіксованої» точності.

2. Розрахуйте кількість робочих днів на основі фіксованого бюджету

Наступного дня менеджер проєкту пропонує фрилансеру попрацювати над проєктом із фіксованим бюджетом. Маючи фіксований бюджет і погодинну ставку фрилансера, допоможіть йому розрахувати кількість днів, які він працюватиме, поки бюджет не вичерпається. Результат обовʼязково потрібно округлити в менший бік до найближчого цілого числа.

daysInBudget(20000, 89);
// => 28

3. Розрахуйте ставку зі знижкою для великих проєктів

Часто клієнти наймають фрилансера на проєкти, що тривають кілька місяців. У таких випадках фрилансер вирішує дати знижку за кожен повний місяць, а решту днів оплачують за денною ставкою. Завдяки чудовому балансу між роботою та життям ми працюємо лише 22 дні в кожному календарному місяці, тож у кожному місяці 22 оплачувані дні. Допоможіть йому оцінити вартість таких проєктів, маючи погодинну ставку, кількість оплачуваних днів у проєкті та місячну ставку знижки. Знижку завжди передають як число, де 42% стає 0.42. Результат обовʼязково потрібно округлити в більший бік до найближчого цілого числа.

priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

Час розпочати Ставки фрилансера?

Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.