JavaScript Числа
JavaScript має лише один тип чисел. Числа можна записувати як з десятковими дробами, так і без них.
Приклад
let x = 3.14; // Число з десятковими знаками
let y = 3; // Число без десяткових знаків
Спробуйте самі »
Дуже великі чи дуже малі числа можуть бути записані в науковому (експонентному) вигляді:
Числа JavaScript завжди є 64-розрядними з плаваючою комою
На відміну від багатьох інших мов програмування, JavaScript не визначає різні типи чисел, наприклад цілі, короткі, довгі, з плаваючою комою тощо.
Числа JavaScript завжди зберігаються як числа з плаваючою комою подвійної точності відповідно до міжнародного стандарту IEEE 754.
Цей формат зберігає числа в 64 бітах, де число (частка) зберігається в бітах від 0 до 51, експоненту в бітах з 52 по 62, а знак в бітах 63:
Значення (він же дроб/Мантиса) | Експонента | Знак |
---|---|---|
52 біта (0 - 51) | 11 бітів (52 - 62) | 1 біт (63) |
Точність цілого числа
Цілі числа (числа без крапки або експоненти) мають точність до 15 цифр.
Приклад
let x = 999999999999999; // x буде 999999999999999
let y = 9999999999999999; // y буде 10000000000000000
Спробуйте самі »
Максимальна кількість десяткових знаків – 17.
Плаваюча точність
Розв’язати задачу вище допоможе множення та ділення:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Спробуйте самі »
Додавання чисел і рядків
УВАГА!!
JavaScript використовує оператор + як для додавання, так і для конкатенації.
Числа додаються. Рядки об’єднуються.
Якщо додати два числа, результатом буде число:
Якщо додати два рядки, результатом буде конкатенація рядків:
Якщо додати число та рядок, результатом буде конкатенація рядка:
Якщо додати рядок і число, результатом буде конкатенація рядка:
Поширеною помилкою є очікування, що цей результат дорівнюватиме 30:
Поширеною помилкою є очікування такого результату: 102030:
Інтерпретатор JavaScript працює зліва направо.
Перші 10 + 20 додаються, оскільки x та y є числами.
Тоді 30 + "30" об’єднується, оскільки z є рядком.
Числові рядки
Рядки JavaScript можуть мати числовий вміст:
let x = 100; // x є числом
let y = "100"; // y є рядком
JavaScript намагатиметься перетворити рядки на число під час усіх числових операцій:
Це спрацює:
let x = "100";
let y = "10";
let z = x / y;
Спробуйте самі »
Це теж спрацює:
let x = "100";
let y = "10";
let z = x * y;
Спробуйте самі »
І це спрацює:
let x = "100";
let y = "10";
let z = x - y;
Спробуйте самі »
Але це не спрацює:
let x = "100";
let y = "10";
let z = x + y;
Спробуйте самі »
В останньому прикладі JavaScript використовує оператор + для об’єднання рядків.
NaN - Not a Number (Не число)
NaN
- це зарезервоване слово JavaScript, яке вказує на те, що число не є дійсним числом.
Спроба виконати арифметику з нечисловим рядком призведе до NaN
(Not a Number):
Однак, якщо рядок містить числове значення, результатом буде число:
Ви можете використовувати глобальну функцію JavaScript isNaN()
, щоб дізнатися, чи значення не є числом:
Слідкуйте за NaN
. Якщо ви використовуєте NaN
у математичній операції, результат також буде NaN
:
Або результатом може бути конкатенація на зразок NaN5:
NaN
є числом: typeof NaN
поверне number
:
Infinity (Нескінченність)
Infinity
(або -Infinity
) – це значення, яке JavaScript поверне, якщо ви обчислите число за межами найбільшого можливого числа.
Приклад
let myNumber = 2;
// Виконувати до нескінченності
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
Спробуйте самі »
Ділення на 0 (нуль) також породжує Infinity
:
Infinity
є числом: typeof Infinity
поверне number
.
Шістнадцяткові числа
JavaScript інтерпретує числові константи як шістнадцяткові, якщо перед ними стоїть 0x.
Ніколи не пишіть число з нулем на початку (наприклад, 07).
Деякі версії JavaScript інтерпретують числа як вісімкові, якщо вони написані з нулем на початку.
За замовчуванням JavaScript відображає числа як десяткові дроби з основою 10.
Але ви можете використовувати метод toString()
для виведення чисел від основи 2 до основи 36.
Шістнадцятковим є основа 16. Десяткове число дорівнює основі 10. Вісімкова система основа 8. Двійковий код є основою 2.
Приклад
let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
Спробуйте самі »
JavaScript Числа як об’єкти
Зазвичай числа JavaScript — це примітивні значення, створені з літералів:
let x = 123;
Але числа також можна визначити як об’єкти за допомогою ключового слова new
:
let y = new Number(123);
Не створюйте Числові об’єкти.
Ключове слово new
ускладнює код і сповільнює швидкість виконання.
Числові об’єкти можуть давати несподівані результати:
Під час використання оператора ==
x та y рівні:
let x = 500;
let y = new Number(500);
Спробуйте самі »
Під час використання оператора ===
x та y не рівні.
let x = 500;
let y = new Number(500);
Спробуйте самі »
Зверніть увагу на різницю між (x==y)
та (x===y)
.
(x == y)
true або false (правда чи неправда)?
let x = new Number(500);
let y = new Number(500);
Спробуйте самі »
(x === y)
true або false (правда чи неправда)?
let x = new Number(500);
let y = new Number(500);
Спробуйте самі »
Порівняння двох об’єктів JavaScript завжди повертає false.
Повний довідник JavaScript Числа
Щоб отримати детальну інформацію про JavaScript числа, відвідайте:
Повний довідник JavaScript Числа на нашому сайті W3Schools українською.
Довідник містить описи та приклади всіх властивостей і методів Числа.