Определяет, является ли переданное значение целым числом.
Тип данных Number в JS
В этой статье вы подробнее познакомитесь с типом данных Number в JavaScript.
Number — это примитивный тип данных, который представляет числовые значения.
В отличие от других языков программирования, в JavaScript не нужно указывать тип числовой переменной: int, float и т.д. И целые числа, и числа с плавающей точкой — все в одном типе Number.
const a = 3;
const b = 3.13;
Чтобы задать очень большое или очень маленькое число, можно использовать экспоненту — e
.
const a1 = 5e9;
console.log(a1); // Вывод: 5000000000
const a2 = 5e-5;
console.log(a2); // Вывод: 0.00005
Еще числа можно задавать в шестнадцатеричной системе счисления. Перед самим числом при этом нужно добавить 0x
— так вы укажете JavaScript, что число записано в шестнадцатеричной форме.
const a = 0xff;
console.log(a); // Вывод: 255
const b = 0x00 ;
console.log(b); // Вывод: 0
Оператор + с числами
Если использовать оператор +
с двумя числами, числа сложатся.
Если использовать оператор со строкой и числом, числа «соединятся».
const a = '4' + 9;
console.log(a); // Вывод: 49
Так происходит, потому что если одно из числе записано строкой — второе тоже превратится в строку. А со строками оператор +
используется для конкатенации — соединяния строк.
С остальными арифметическими операторами все работает наоборот. Сначала строка превращается в число, а затем производится операция.
const a = '4' - 2;
console.log(a); // 2
const a = '4' / 2;
console.log(a); // 2
const a = '4' * 2;
console.log(a); // 8
Значение NaN
NaN
(Not A Number) — это ключевое слово, которое означает, что определенное значение не является числом.
Например, NaN — результат арифметических операций между числами и строками. Исключение — оператор +
.
const a = 4 - 'привет';
console.log(a); // Вывод: NaN
Определить, является ли значение числом, можно с помощью встроенной функции isNaN()
.
const a = isNaN(9);
console.log(a); // Вывод: false
const a = isNaN(4 - 'привет');
console.log(a); // Вывод: true
Если использовать оператор typeof
для NaN-значения, получится "number"
.
const a = 4 - 'привет';
console.log(a); // Вывод: NaN
console.log(typeof a); // Вывод: "number"
Бесконечность
Если результат вычисления превышает наибольшее или наименьшее возможное число, возвращается Infinity
или -Infinity
соответственно.
const a = 2 / 0;
console.log(a); // Вывод: Infinity
const a = -2 / 0;
console.log(a); // Вывод: -Infinity
Тип BigInt
Тип Number позволяет хранить только числа меньше (2³⁵ - 1) и больше -(2³⁵ - 1). Если необходимо использовать большего размера, можно воспользоваться типом BigInt.
Чтобы создать число типа BigInt, достаточно добавить к числу букву n
.
// значение BigInt
const value = 900719925124740998n;
// складываем два BigInt числа
const value1 = value + 1n;
console.log(value1); // Вывод: "900719925124740999n"
Примечание. BigInt добавили в JavaScript недавно, он поддерживается не во всех браузерах. Проверить, где работает BigInt, можно на странице JavaScript BigInt browser support.
Числа — в 64-битном формате
В JavaScript числа хранятся в 64-битном формате IEEE-754, также известном как «числа с плавающей точкой двойной точности».
Само число хранится в позициях с 0 по 51 бит, экспонента — в позициях с 52 по 62 бит, а знак — на 63 позиции.
Число | Экспонента | Знак |
52 бита (0–51) | 11 бита (52–62) | 1 бит (63) |
Проблема потери точности
Операции над числами с плавающей точкой иногда приводят к неожиданным результатам. Это происходит из-за потери точности.
const a = 0.1 + 0.2;
console.log(a); // Вывод: 0.30000000000000004
Результат операции 0.1 + 0.2
должен быть 0.3, но JS выводит 0.300000000000000000004. Эта ошибка возникает потому, что в JavaScript числа хранятся в двоичной форме для внутреннего представления десятичных цифр. А десятичные дроби нельзя точно представить в двоичной форме.
Чтобы решить проблему, можно сделать так:
const a = (0.1 * 10 + 0.2 * 10) / 10;
console.log(a); // Вывод: 0.3
Еще вариант — использовать метод toFixed()
.
const a = 0.1 + 0.2;
console.log(a.toFixed(2)); // Вывод: 0.30
toFixed(2)
округляет десятичную дробь до двух знаков после запятой.
Примечание. Целые числа точны до 15 цифр.
const a = 9999999999999999 console.log(a); // Вывод: 10000000000000000
Числа как объекты
Создавать числа можно и с помощью ключевого слова new
— как объекты.
const a = 45;
// создание объекта число
const b = new Number(45);
console.log(a); // Вывод: 45
console.log(b); // Вывод: 45
console.log(typeof a); // Вывод: "number"
console.log(typeof b); // Вывод: "object"
Примечание. Не рекомендуется использовать числовые объекты — это замедляет работу программы.
Методы чисел
Метод | Описание |
isNaN() |
Определяет, является ли переданное значение NaN. |
isFinite() |
Определяет, является ли переданное значение конечным числом. |
isInteger() |
|
isSafeInteger() |
Определяет, является ли переданное значение безопасным целым числом. |
parseFloat(строка) |
Разбирает строковый аргумент и возвращает число с плавающей запятой. |
parseInt(строка) |
Разбирает строковый аргумент и возвращает целое число. |
toExponential() |
Возвращает строку, представляющую объект Number в экспоненциальной записи. |
toFixed() |
Форматирует число, используя запись с фиксированной запятой. |
toPrecision() |
Возвращает строку, представляющую объект Number с указанной точностью. |
toString() |
Возвращает строковое представление указанного объекта Number. |
valueof() |
Возвращает примитивное значение объекта Number. |
toLocaleString() |
Возвращает строку с языкозависимым представлением даты. |
Давайте рассмотрим некоторые методы на примере:
// проверяем, является ли a — целым числом
const a = 12;
console.log(Number.isInteger(a)); // Вывод: true
// проверяем, является ли b значением NaN
const b = NaN;
console.log(Number.isNaN(b)); // Вывод: true
// выводим нецелое число с точностью до двух цифр после запятой
const d = 5.1234;
console.log(d.toFixed(2)); // Вывод: 5.12
Свойства объекта Number
Вот некоторые свойства объекта Number:
Свойство | Описание |
EPSILON |
Представляет собой разницу между единицей и наименьшим значением, большим единицы, которое может быть представлено типом Number. |
MAX_SAFE_INTEGER |
Представляет максимальное безопасное целочисленное значение в JavaScript — (2³⁵ - 1) . |
MAX_VALUE |
Представляет максимальное числовое значение, представимое в JavaScript. |
MIN_SAFE_INTEGER |
Представляет минимальное безопасное целочисленное значение в JavaScript — - (2³⁵ - 1) . |
MIN_VALUE |
Представляет минимальное положительное числовое значение, представимое в JavaScript. |
NaN |
Представляет «не число». |
NEGATIVE_INFINITY |
Представляет положительную бесконечность. |
POSITIVE_INFINITY |
Представляет отрицательную бесконечность. |
prototype |
Позволяет добавлять свойства к объектами Number. |
Рассмотрим некоторые свойства на примере:
// наибольшее возможное числовое значение
const a = Number.MAX_VALUE;
console.log(a); // 1.7976931348623157e+308
// максимально возможное безопасное числовое значение
const a = Number.MAX_SAFE_INTEGER;
console.log(a); // 9007199254740991
Функция Number()
Функция Number()
позволяет преобразовать разные типы данных в тип данных Number.
const a = '23'; // тип string
const b = true; // тип boolean
// преобразовываем в число
const result1 = Number(a);
const result2 = Number(b);
console.log(result1); // Вывод: 23
console.log(result2); // Вывод: 1