Багато мов програмування мають окремі числові типи для різних видів чисел, але в 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
У цій вправі ми будемо писати код, який допоможе фрилансеру спілкуватися з клієнтами про ціни на певні проєкти. Ми напишемо кілька допоміжних функцій, щоб швидко розраховувати вартість для клієнтів.
Змінна ratePerHour і функція dayRate стосуються грошей.
Ми вимірюємо гроші за одиницю часу: відповідно за годину та за день.
Клієнт звертається до фрилансера, щоб дізнатися про його ставки. Фрилансер пояснює, що працює 8 годин на день. Однак фрилансер знає лише погодинні ставки на проєкт. Допоможіть йому оцінити денну ставку на основі погодинної ставки.
dayRate(89);
// => 712
Денну ставку не потрібно округлювати чи приводити до «фіксованої» точності.
Наступного дня менеджер проєкту пропонує фрилансеру попрацювати над проєктом із фіксованим бюджетом. Маючи фіксований бюджет і погодинну ставку фрилансера, допоможіть йому розрахувати кількість днів, які він працюватиме, поки бюджет не вичерпається. Результат обовʼязково потрібно округлити в менший бік до найближчого цілого числа.
daysInBudget(20000, 89);
// => 28
Часто клієнти наймають фрилансера на проєкти, що тривають кілька місяців.
У таких випадках фрилансер вирішує дати знижку за кожен повний місяць, а решту днів оплачують за денною ставкою.
Завдяки чудовому балансу між роботою та життям ми працюємо лише 22 дні в кожному календарному місяці, тож у кожному місяці 22 оплачувані дні.
Допоможіть йому оцінити вартість таких проєктів, маючи погодинну ставку, кількість оплачуваних днів у проєкті та місячну ставку знижки.
Знижку завжди передають як число, де 42% стає 0.42. Результат обовʼязково потрібно округлити в більший бік до найближчого цілого числа.
priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.