Формат чисел в JavaScript

У JavaScript всі числа зберігаються у форматі 64-бітних чисел з плаваючою комою (double precision floating point). Цей формат дозволяє зберігати числа в діапазоні від ±(2^-1074) до ±(2^1024), що приблизно від 5e-324 до 1.8e+308.

// Приклади різних форматів чисел
let integer = 42;           // ціле число
let float = 42.42;         // число з плаваючою комою
let scientific = 1e6;      // наукова нотація (1000000)
let negative = -42;        // від'ємне число

Системи числення

JavaScript дозволяє записувати числа в різних системах числення, що особливо корисно при роботі з бітовими операціями або при взаємодії з низькорівневими системами.

// Десяткова система (за замовчуванням)
let decimal = 255;        // 255

// Шістнадцяткова система (0x)
let hex = 0xFF;          // 255
let bigHex = 0xBADCAFE;  // 195939070

// Вісімкова система (0o)
let octal = 0o377;       // 255
let newOctal = 0o755;    // 493 (часто використовується для прав доступу)

// Двійкова система (0b)
let binary = 0b11111111; // 255
let bits = 0b1010;       // 10

Конвертація між системами числення

Метод toString(base)

Конвертує число в рядок у зазначеній системі числення. Параметр base визначає основу системи числення (від 2 до 36):

const num = 255;

console.log(num.toString(2)); // "11111111" (двійкова система)
console.log(num.toString(8)); // "377" (вісімкова система)
console.log(num.toString(16)); // "ff" (шістнадцяткова система)

Метод parseInt(string, base)

Конвертує рядок, що представляє число в зазначеній системі числення, у десяткове число:

console.log(parseInt("11111111", 2));  // 255 (з двійкової в десяткову)
console.log(parseInt("377", 8));       // 255 (з вісімкової в десяткову)
console.log(parseInt("ff", 16));       // 255 (з шістнадцяткової в десяткову)

Спеціальні значення Number

JavaScript має кілька спеціальних числових значень, які використовуються в особливих випадках:

// Infinity
console.log(1 / 0);              // Infinity
console.log(Number.POSITIVE_INFINITY); // Infinity
console.log(-1 / 0);             // -Infinity
console.log(Number.NEGATIVE_INFINITY); // -Infinity

// NaN (Not a Number)
console.log(0 / 0);              // NaN
console.log(parseInt("hello"));   // NaN
console.log(NaN + 1);            // NaN
console.log(Number.NaN);         // NaN

// Перевірка на NaN
console.log(isNaN(NaN));         // true
console.log(Number.isNaN(NaN));  // true (більш надійний метод)

<aside> 💡

NaN (Not-a-Number) у JavaScript — це спеціальне значення, яке вказує, що результат операції не є числом. Воно використовується, коли неможливо представити значення у вигляді числа, але операція повинна повернути числовий тип.

NaN не дорівнює нічому, навіть самому собі, тому порівняння NaN === NaN завжди повертає false:

</aside>

console.log(NaN === NaN); // false

Перетворення на число