Basics

Десятичные числа

В JavaScript целые десятичные числа записываются как последовательность цифр. Например:

0
3
10000000

Числовой формат JavaScript позволяет точно представлять все целые числа в диапазоне от –9007199254740992 (–253) до 9007199254740992 (253) включительно. Для целых значений вне этого диапазона может теряться точность в младших разрядах.

Обратите внимание, что десятичные литералы могут начинаться с нуля (0), за которым следует другая десятичная цифра, но если следующая за нулем цифра меньше 8, то число обрабатывается как восьмеричное.

// Будьте внимательны при использование нулей в начале чисел:

0888 // 888 обрабатывается как десятичное
0777 // обрабатывается как восьмеричное в нестрогой форме (511 в десятичной)

Двоичные числа

Синтаксис двоичных чисел использует ведущий 0, за которым следует латинская буква "B" в верхнем или нижнем регистре (0bor0B). Если цифры после 0bне являются 0 или 1, то будет сгенерировано SyntaxError с сообщением: "Missing binary digits after 0b".

var FLT_SIGNBIT  = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607

Восьмеричные числа

Синтаксис восьмеричных чисел использует ноль в начале. Если цифры после 0 не входят в диапазон от 0 до 7, число будет интерпретировано как десятичное.

var n = 0755; // 493
var m = 0644; // 420

Шестнадцатеричные числа

Синтаксис шестнадцатеричных чисел использует ведущий 0, за которым следует латинская буква "X" в верхнем или нижнем регистре (0xor0X). Если цифры после 0x не входят в диапазон (0123456789ABCDEF), то будет сгенерировано SyntaxError с сообщением: "Identifier starts immediately after numeric literal".

0xFFFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF   // 81985529216486900
0XA                 // 10

Операции с числами

Для работы с числами в JavaScript-программах используются поддерживаемые языком арифметические операторы, к которым относятся операторы сложения (+), вычитания (-), умножения (*) и деления (/). Помимо перечисленных основных арифметических операторов, с помощью большого количества математических функций, относящихся к базовой части языка, JavaScript поддерживает выполнение более сложных математических операций . Для удобства эти функции хранятся в виде свойств одного объекта Math, и для доступа к ним всегда используется литеральное имя Math.

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

Преобразование чисел в строки производится автоматически, по мере необходимости. Например, если число используется в операции конкатенации строк, оно будет преобразовано в строку:

var n = 100;
var s = n + " жильцов в доме.";

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

var n_as_string = n + "";

Для явного преобразования числа в строку используется функция String():

var string_value = String(number);

Еще один способ преобразования числа в строку заключается в вызове метода toString():

string_value = number.toString( );

Метод toString() объекта Number (примитивы чисел автоматически преобразуются в объекты типа Number, благодаря чему можно воспользоваться этим методом) может принимать один необязательный аргумент, который определяет базу или основание, системы счисления для преобразования. Если основание системы счисления не указывается, то по умолчанию она предполагается равной 10. Однако существует возможность выполнять преобразования и в других системах исчисления (от 2 до 36)1, например:

var n = 17;
binary_string = n.toString(2); // Вернет "10001"
octal_string = "0" + n.toString(8); // Вернет "021"
hex_string = "0x" + n.toString(16); // Вернет "0x11"

Специальные числовые значения

В JavaScript определено несколько специальных числовых значений. Когда вещественное число превышает самое большое представимое конечное значение, результату присваивается специальное значение бесконечности, которое в JavaScript обозначается как Infinity. А когда отрицательное число становится меньше наименьшего представимого отрицательного числа, результатом является отрицательная бесконечность, обозначаемая как Infinity.

Еще одно специальное числовое значение возвращается JavaScript, когда математическая операция (например, деление нуля на ноль) приводит к неопределенному результату или ошибке. В этом случае результатом является специальное значение «не число», обозначаемое как NaN. «Не число» (Not a Number) ведет себя необычно: оно не равно ни одному другому числу, в том числе и самому себе! По данной причине для проверки на это значение имеется специальная функция isNaN(). Похожая функция, isFinite(), позволяет проверить число на неравенство NaN или положительную/отрицательную бесконечность.

Константа

Значение

Infinity

Специальное значение, обозначающее бесконечность

NaN

Специальное значение – «не число»

Number.MAX_VALUE

Максимально представимое значение

Number.MIN_VALUE

Наименьшее представимое значение

Number.NaN

Специальное значение – «не число»

Number.POSITIVE_INFINITY

Специальное значение, обозначающее плюс бесконеч ность

Number.NEGATIVE_INFINITY

Специальное значение, обозначающее минус бесконеч ность

Last updated