JS об'єкт Number
Використання об'єкта
У JavaScript числа - це не просто арифметичні значення. Вони є екземплярами об'єкта Number, що робить їх частиною більш загальної системи об'єктно-орієнтованого програмування у JavaScript. Ця об'єктна природа чисел відкриває перед розробниками ряд можливостей, але також має деякі нюанси, які важливо враховувати.
В JavaScript числа можуть бути представлені в різних форматах:
255; // десяткове представлення
0xff; // шістнадцяткове представлення
0b11111111; // двійкове представлення
0o377; // вісімкове представлення
0.255e3; // експоненціальне представлення
Усі ці формати представляють одне й те ж саме число - 255.
Типи чисел:
JavaScript, традиційно, має лише один числовий тип - Number. Всі числа в JavaScript є 64-бітними числами з плаваючою комою подвійної точності, що відповідає стандарту IEEE 754. Це може призвести до деяких неочікуваних результатів, особливо при роботі з дуже великими або дуже маленькими числами.
Однак, з появою ES2020, в JavaScript було введено новий числовий тип - BigInt. Це дозволяє представляти цілі числа будь-якої довжини без втрати точності.
let ordinaryNumber = 37; // `Number`
let bigIntNumber = 37n; // `BigInt`
автор: Bond
Приведення типів в JavaScript
В JavaScript існує декілька способів приведення типів, особливо коли мова йде про приведення різних значень до числа. Функція Number() є однією з найпростіших методів для цього, але розуміння її поведінки в різних ситуаціях є важливим.
Number("123"); // 123, рядок перетворюється на число
Number("unicorn"); // NaN, оскільки "unicorn" не є числом
Number(undefined); // NaN, оскільки `undefined` не має числового еквівалента
Number(true); // 1, бо логічне `true` відповідає числу 1
Внутрішнє кодування чисел:
JavaScript використовує формат подвійної точності IEEE 754 для представлення чисел. Цей формат складається з трьох компонентів: знаку (позитивний або негативний), експоненти (потужності двійки) та мантіси (фактичне значення числа). Це дає можливість представляти дуже маленькі або дуже великі числа, але з певними обмеженнями щодо точності.
Автоматичне приведення до числа:
JavaScript є мовою з динамічною типізацією, тому багато операцій автоматично приводять значення до певного типу, коли це необхідно. Це може викликати неочікувані результати, особливо якщо не розуміти, як працює приведення.
+true; // 1, бо логічне `true` приводиться до числа 1
+"123" - 0; // 123, рядок "123" приводиться до числа під час арифметичних операцій
+undefined; // NaN, оскільки `undefined` не має числового еквівалента
Існують і інші методи для приведення рядків до чисел, такі як Number.parseFloat() та Number.parseInt(), які мають свої нюанси та специфічне використання.
Конвертація значень до цілих чисел:
Часто існує потреба привести число з плаваючою комою до цілого. JavaScript пропонує декілька методів для цього, таких як Math.floor(), який округлює число вниз, і Math.ceil(), який округлює число вгору.
Math.floor(1.9); // 1, округлено вниз
Math.ceil(1.1); // 2, округлено вгору
Math.round(1.5); // 2, стандартне математичне округлення
Розуміння різних методів і способів приведення типів в JavaScript є ключовим для написання точного та надійного коду.
автор: Bond
- Порада
-
Оскільки
автор: BondNaNне дорівнює самому собі, завжди використовуйте функціюisNaN()для перевірки наNaN. - Порада
-
Якщо ви плануєте працювати з дуже великими числами, розгляньте можливість використання
автор: BondBigIntзамість звичайногоNumber. - Нотатка
-
JavaScript автоматично може привести рядки до чисел при виконанні математичних операцій. Однак це може призвести до непередбачуваних результатів. Наприклад,
автор: Bond"5" + 3дасть вам рядок"53", а"5" - 3дасть число2. - Нотатка
-
Числа з плаваючою комою в JavaScript можуть не завжди давати очікувані результати через обмеження точності. Наприклад,
автор: Bond0.1 + 0.2 !== 0.3. Коли ви здійснюєте обчислення, особливо важливі з фінансової точки зору, враховуйте цю особливість.
Синтаксис
let num = new Number(value);
let num = Number(value);
методи
| Метод | Опис |
|---|---|
| isFinite | Перевіряє, чи є значення скінченним числом. |
| isInteger | Перевіряє, чи є значення цілим числом. |
| isNaN | Перевіряє, чи є значення "не числом" (NaN). |
| isSafeInteger | Визначає, чи є число безпечним цілим числом в межах діапазону точного представлення у JavaScript. |
| parseFloat | Перетворює рядок на десяткове число з плаваючою комою. |
| parseInt | Перетворює рядок у ціле число. |
| toExponential | Перетворює число в рядок у експоненціальному представленні. |
| toFixed | Форматує число, використовуючи фіксовану кількість знаків після десяткової коми. |
| toLocaleString | Конвертує число в рядок з урахуванням локальних особливостей форматування. |
| toPrecision | Визначає формат числа, використовуючи вказану кількість знаків. |
| toString | Перетворює число в його текстове представлення. |
| valueOf | Повертає примітивне числове значення об'єкта Number. |
властивості
| Властивість | Опис |
|---|---|
| EPSILON | |
| MAX_SAFE_INTEGER | |
| MIN_SAFE_INTEGER | Визначає найменше безпечне ціле число, яке можна точно представити в JavaScript. |
| MAX_VALUE | Визначає найбільше позитивне число, яке можна представити в JavaScript. |
| MIN_VALUE | Визначає найменше позитивне число, яке можна представити в JavaScript, ближче до нуля, ніж будь-яке інше число. |
| NaN | Позначає "Not-a-Number" значення, що вказує на результат неправильної або недопустимої математичної операції. |
| NEGATIVE_INFINITY | Представляє значення, що є меншим за будь-яке інше число. |
| POSITIVE_INFINITY | Представляє числове значення, яке більше за будь-яке інше можливе числове значення. |
| prototype | Прототип, що містить методи та властивості, спільні для всіх об'єктів типу Number. |
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 3 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
У цьому прикладі ми спробували конвертувати рядок "apple" в число, але, зрозуміло, що слово "apple" не можна перетворити на число, тому Number(valueA) повертає NaN. Для рядка "5" конвертація в числовий тип проходить успішно. Функція isNaN дозволяє перевірити, чи є значення "не числом".
const valueA = "apple";
const valueB = "5";
console.log(isNaN(Number(valueA))); // true
console.log(isNaN(Number(valueB))); // false
Number.MAX_SAFE_INTEGER вказує на найбільше ціле число, яке можна безпечно представити в JavaScript. Якщо ми спробуємо додати до цього числа значення, що перевищує 1, результат може бути неточним. У цьому прикладі ми бачимо, що додавання 2 до Number.MAX_SAFE_INTEGER призводить до неточності.
const maxSafe = Number.MAX_SAFE_INTEGER;
const beyondMaxSafe = maxSafe + 2;
console.log(maxSafe); // 9007199254740991
console.log(beyondMaxSafe === maxSafe + 2); // false
Метод toFixed дозволяє вам заокруглити число з плаваючою комою до заданої кількості знаків після коми. У цьому прикладі ми використовуємо toFixed(0) для заокруглення до найближчого цілого числа. Зверніть увагу, що toFixed повертає рядок, тому ми використовуємо Number() для перетворення результату назад у число.
const floatNumber = 12.7;
const roundedNumber = Number(floatNumber.toFixed(0));
console.log(roundedNumber); // 13
Коментарі
Коментарів ще немає — будьте першим!