В этом руководстве вы узнаете о числах, типе чисел JavaScript Number и о том, как их эффективно использовать.
Введение в JavaScript Number
JavaScript использует тип number
для представления как целых чисел, так и значений с плавающей запятой. Технически number
тип JavaScript использует формат IEEE-754.
ES2020 представил новый примитивный тип bigint
, который представляет большие целые числа, значения которых больше 253 — 1.
Для поддержки различных типов чисел JavaScript использует различные форматы числовых литералов.
Целые числа
Ниже показано, как объявить переменную, содержащую десятичное целое число:
let counter = 100;
Целые числа могут быть представлены в следующих форматах:
- Восьмеричный (основание 8)
- Шестнадцатеричный (на основе 16)
Когда вы используете восьмеричные и шестнадцатеричные числа в арифметических операциях, JavaScript обрабатывает их как десятичные числа.
Восьмеричные числа
Восьмеричное буквальное число начинается с цифры ноль (0), за которой следует последовательность восьмеричных цифр (числа от 0 до 7). Например:
let num = 071; console.log(num);
Выход:
57
Если восьмеричное число содержит число, которое не находится в диапазоне от 0 до 7, механизм JavaScript игнорирует 0 и обрабатывает число как десятичное. Например:
let num = 080; console.log(num);
Выход:
80
Это неявное поведение может вызвать проблемы. Поэтому в ES6 появился новый восьмеричный литерал, начинающийся с 0o
, за которым следует последовательность восьмеричных цифр(от 0 до 7). Например:
let num = 0o71; console.log(num);
Выход:
57
Если вы введете недопустимое число после 0o
, JavaScript выдаст синтаксическую ошибку, подобную этой:
let num = 0o80; console.log(num);
Выход:
let num = 0o80; ^^ SyntaxError: Invalid or unexpected token
Шестнадцатеричные
Шестнадцатеричные числа начинаются с 0x или 0X, за которыми следует любое количество шестнадцатеричных цифр (от 0 до 9 и от a до f). Например:
let num = 0x1a; console.log(num);
Выход:
26
Число с плавающей запятой
Чтобы определить буквальное число с плавающей запятой, вы включаете десятичную точку и по крайней мере одно число после нее. Например:
let price = 9.99; let tax = 0.08; let discount = .05; // valid but not recommeded
Когда у вас очень большое число, вы можете использовать электронную нотацию. Электронная нотация указывает, что число должно быть умножено на 10, возведенное в заданную степень. Например:
let amount = 3.14e7; console.log(amount);
Выход:
31400000
Обозначение 3.14e7
означает, что нужно взять 3.14
и умножить на 107
.
Точно так же вы можете использовать E-нотацию для представления очень небольшого числа. Например:
let amount = 5e-7; console.log(amount);
Выход:
0.0000005
Обозначение 5e-7 означает, что нужно взять 5 и разделить его на 10 000 000.
Кроме того, JavaScript автоматически преобразует любое число с плавающей запятой, содержащее не менее шести нулей после запятой, в электронную нотацию. Например:
let amount = 0.0000005; console.log(amount);
Выход:
5e-7
Числа с плавающей запятой точны до 17 знаков после запятой. Когда вы выполняете арифметические операции над числами с плавающей запятой, вы часто получаете приблизительный результат. Например:
let amount = 0.2 + 0.1; console.log(amount);
Выход:
0.30000000000000004
Большие целые числа
JavaScript представил тип bigint
, начиная с ES2022. Тип bigint
хранит целые числа, значения которых больше 253-1.
Большой целочисленный литерал имеет символ n
в конце целочисленного литерала, например:
let pageView = 9007199254740991n;
Тип JavaScript Number представляет как целые числа, так и числа с плавающей запятой.