Числа

В языке JavaScript для хранения чисел предназначены следующие типы данных:

  • number — целые числа или числа с плавающей точкой (вещественные числа). Числа хранятся в формате вещественных чисел двойной точности:
console.log(typeof 1);             // number
console.log(typeof 2.0);           // number
  • bigint — целые числа больших размеров:
console.log(typeof 1n);            // bigint

Указание значений

Целочисленное значение задается в десятичной, двоичной, восьмеричной или шестнадцатеричной форме. Двоичные числа начинаются с комбинации символов 0b (или 0B) и могут содержать цифры 0 или 1. Восьмеричные числа начинаются с нуля или комбинации символов 0o и содержат цифры от 0 до 7. Если встречаются другие цифры, то значение интерпретируется как десятичное. Шестнадцатеричные числа начинаются с комбинации символов 0x (или 0X) и могут содержать цифры от 0 до 9 и буквы от A до F (регистр букв не имеет значения). Двоичные, восьмеричные и шестнадцатеричные значения преобразуются в десятичное значение. Пример:

// Двоичное значение
console.log(0b01110111);          // 119
// Восьмеричное значение
console.log(0o167);               // 119
// Шестнадцатеричное значение
console.log(0x77);                // 119
console.log(0xFF);                // 255
// Десятичное значение
console.log(119);                 // 119

Восьмеричное значение может также начинаться только с нуля, но в строгом режиме данный способ приведет к исключению:

'use strict';
console.log(0o167);               // OK. 119
// console.log(0167);
// SyntaxError: Octal literals are not allowed in strict mode.

Вещественное число может содержать точку и (или) экспоненту, начинающуюся с буквы E (регистр не имеет значения):

console.log(20.0);                // 20
console.log(12.1e20);             // 1.21e+21
console.log(.123);                // 0.123
console.log(47.E-10);             // 4.7e-9

При выполнении операций над вещественными числами следует учитывать ограничения точности вычислений. Например, результат следующей инструкции может показаться странным:

console.log(0.3 - 0.1 - 0.1 - 0.1);
// -2.7755575615628914e-17

Ожидаемым был бы результат 0.0, но как видно из примера мы получили совсем другой результат (-2.7755575615628914e-17). Он очень близок к нулю, но не равен нулю. Учитывайте это при указании вещественных чисел в качестве значения счетчика внутри цикла. Попытка проверить значение на равенство может привести к бесконечному циклу.

В логическом контексте число 0 и значение NaN трактуются как false, тогда как любое другое число — как true:

console.log( !!0 );          // false
console.log( !!0.0 );        // false
console.log( !!NaN );        // false
console.log( !!1 );          // true
console.log( !!-1 );         // true

Если выполнить приведение логических значений к типу number, то false будет приведено к 0, а true — к 1:

console.log( false + 0 );    // 0
console.log( true + 0 );     // 1

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов