Number

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Значения Number представляют числа с плавающей запятой, такие как 37 или -9,25.

Конструктор Number содержит константы и методы для работы с числами. Значения других типов могут быть преобразованы в числа с помощью функции Number().

Описание

Чаще всего числа представляются в виде прямой записи, например 255 или 3.14159. В разделе «Лексический синтаксис» есть более подробное описание.

js
255; // двести пятьдесят пять
255.0; // такое же число
255 === 255.0; // true
255 === 0xff; // true (шестнадцатеричная запись)
255 === 0b11111111; // true (двоичная запись)
255 === 0.255e3; // true (десятичная экспоненциальная запись)

В JavaScript литерал числа (например, 37) является значением с плавающей запятой, а не целым числом. Нет отдельного типа для представления целых значений. В JavaScript есть тип BigInt, но он не предназначен для замены Number для постоянного использования. Поэтому 37 это число, а не BigInt.

При использовании в качестве функции Number(value) преобразует строку или другое значение к числовому типу. Если значение не может быть преобразовано, то она вернёт NaN.

js
Number("123"); // вернёт число 123
Number("123") === 123; // true

Number("unicorn"); // NaN
Number(undefined); // NaN

Конструктор

Number()

Создаёт новое значение Number.

Когда Number вызывается в качестве конструктора (с ключевым словом new), он создаёт объект Number, который не является примитивом. Например, typeof new Number(42) === "object" и new Number(42) !== 42 (при этом new Number(42) == 42).

Предупреждение: Как правило вам не нужно использовать Number в качестве конструктора.

Статические свойства

Number.EPSILON

Наименьший интервал между двумя представимыми числами.

Number.MAX_SAFE_INTEGER

Максимальное целое число, которое можно безопасно использовать в JavaScript (253 - 1).

Number.MAX_VALUE

Наибольшее представимое положительное число.

Number.MIN_SAFE_INTEGER

Минимальное целое число, которое можно безопасно использовать в JavaScript (-(253 - 1)).

Number.MIN_VALUE

Наименьшее представимое положительное число, то есть самое близкое к нулю положительное число (которое ещё не является нулём).

Number.NaN

Специальное значение для представления значений, не являющихся числом.

Number.NEGATIVE_INFINITY

Специальное значение для представления отрицательной бесконечности. Возвращается при переполнении.

Number.POSITIVE_INFINITY

Специальное значение для представления бесконечности. Возвращается при переполнении.

Статические методы

Number.isFinite()

Определяет, является ли переданное значение конечным числом.

Number.isInteger()

Определяет, является ли переданное значение целым числом.

Number.isNaN()

Определяет, является ли переданное значение значением NaN.

Number.isSafeInteger()

Определяет, является ли переданное значение безопасным целым числом (в диапазоне от -(253 - 1) до 253 - 1).

Number.parseFloat()

То же самое, что и глобальная функция parseFloat().

Number.parseInt()

То же самое, что и глобальная функция parseInt().

Свойства экземпляра

Эти свойства определены в Number.prototype и есть у всех экземпляров Number.

Number.prototype.constructor

Функция-конструктор, создающая экземпляр объекта. Для экземпляров Number начальным значением является конструктор Number.

Методы экземпляра

Number.prototype.toExponential()

Возвращает строку, представляющую число в экспоненциальной записи.

Number.prototype.toFixed()

Возвращает строку, представляющую число в записи с фиксированной точкой.

Number.prototype.toLocaleString()

Возвращает строку с зависимым от языка представлением этого числа. Переопределяет метод Object.prototype.toLocaleString().

Number.prototype.toPrecision()

Возвращает строку, представляющую число с заданной точностью в формате с фиксированной точкой или экспоненциальной записи.

Number.prototype.toString()

Возвращает строку, представляющую указанный объект с указанным основании. Переопределяет метод Object.prototype.toString().

Number.prototype.valueOf()

Возвращает примитивное значение указанного объекта. Переопределяет метод Object.prototype.valueOf().

Примеры

Использование объекта Number для присваивания значений числовым переменным

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

js
const biggestNum = Number.MAX_VALUE;
const smallestNum = Number.MIN_VALUE;
const infiniteNum = Number.POSITIVE_INFINITY;
const negInfiniteNum = Number.NEGATIVE_INFINITY;
const notANum = Number.NaN;

Целочисленный диапазон для объекта Number

Следующий пример показывает, какие минимальное и максимальное целочисленные значения может представить объект Number.

js
const biggestInt = Number.MAX_SAFE_INTEGER; // (2**53 - 1) => 9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER; // -(2**53 - 1) => -9007199254740991

При разборе сериализованных в JSON данных можно ожидать, что целочисленные значения, выходящие за пределы этого диапазона, будут повреждены, если анализатор JSON приведет их к типу Number.

Возможный обходной путь — использовать вместо этого String.

Большие числа могут быть представлены с использованием типа BigInt.

Использование Number() для преобразования объекта Date

В следующем примере объект Date преобразуется в числовое значение с использованием объекта Number в качестве функции:

js
const d = new Date("1995-12-17T03:24:00");
console.log(Number(d));

Это выведет 819199440000.

Преобразование строк и null в числа

js
Number("123"); // 123
Number("123") === 123; // true
Number("12.3"); // 12.3
Number("12.00"); // 12
Number("123e-1"); // 12.3
Number(""); // 0
Number(null); // 0
Number("0x11"); // 17
Number("0b11"); // 3
Number("0o11"); // 9
Number("foo"); // NaN
Number("100a"); // NaN
Number("-Infinity"); // -Infinity

Спецификации

Specification
ECMAScript Language Specification
# sec-number-objects

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также