САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ

JavaScript Числа



JavaScript имеет только один тип числа. Числа могут быть записаны с десятичными знаками или без них.


Пример

var x = 3.14;    // Число с десятичными знаками
var y = 3;       // Число без десятичных знаков

Редактор кода »

Очень большие или очень маленькие числа могут быть записаны с научной (экспоненциальной) нотацией:

Пример

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

Редактор кода »


JavaScript Числа всегда являются 64-разрядными числами с плавающей запятой

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

JavaScript Числа всегда хранятся с плавающей запятой двойной точности номера, следующие международному стандарту IEEE 754.
Этот формат хранит числа в 64 битах, где число (дробь) хранится в битах 0 до 51, экспонента в битах 52 до 62, и знак в бите 63:

Значение (Фракция/Мантисса) Показатель Символ
52 биты (0 - 51) 11 биты (52 - 62) 1 бит (63)

Точность

Целые числа (числа без точки или экспоненты) являются точными до 15 цифр.

Пример

var x = 999999999999999;   // x будет 999999999999999
var y = 9999999999999999;  // y будет 10000000000000000
Редактор кода »

Максимальное число десятичных знаков-17, а в арифметике с плавающей запятой нет, всегда точность 100%:

Пример

var x = 0.2 + 0.1;         // x будет 0.30000000000000004

Редактор кода »

Для решения вышеприведенной задачи помогает умножать и делить:

Пример

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x будет 0.3
Редактор кода »

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

ВНИМАНИЕ!!

JavaScript используется оператор + для сложения и конкатенации.

Числа добавляются. Строки объединяются.

Если вы добавите два числа, результатом будет число:

Пример

var x = 10;
var y = 20;
var z = x + y;           // z будет 30 (число)
Редактор кода »

Если добавить две строки, результатом будет объединение строк:

Пример

var x = "10";
var y = "20";
var z = x + y;           // z будет 1020 (строка)
Редактор кода »

Если добавить число и строку, результатом будет объединение строк:

Пример

var x = 10;
var y = "20";
var z = x + y;           // z будет 1020 (строка)
Редактор кода »

Если добавить строку и число, результатом будет объединение строк:

Пример

var x = "10";
var y = 20;
var z = x + y;           // z будет 1020 (строка)
Редактор кода »

Распространенной ошибкой является ожидание, что этот результат будет 30:

Пример

var x = 10;
var y = 20;
var z = "Результат:" + x + y;
Редактор кода »

Распространенной ошибкой ожидать, что этот результат 102030:

Пример

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;
Редактор кода »

JavaScript компилятор работает слева направо.

Первые 10 + 20 добавляются, потому что x и y оба числа.

Тогда 30 + "30" это объединенное, потому что Z - это строка.


Числовые строки

JavaScript строки могут иметь числовое содержимое:

var x = 100;         // x будет число

var y = "100";       // y будет строка

JavaScript попытается преобразовать строки в числа во всех числовых операциях:

Будет работать:

var x = "100";
var y = "10";
var z = x / y;       // z будет 10

Редактор кода »

Будет работать:

var x = "100";
var y = "10";
var z = x * y;       // z будет 1000

Редактор кода »

Будет работать:

var x = "100";
var y = "10";
var z = x - y;       // z будет 90

Редактор кода »

Не сработает:

var x = "100";
var y = "10";
var z = x + y;       // z не будет 110 (будет 10010)

Редактор кода »

В последнем примере JavaScript использует оператор + для объединения строк.


NaN - не число

NaN - это зарезервированное слово JavaScript, указывающее, что число не является юридическим.

Попытка выполнить арифметику с нечисловой строкой приведет к NaN (не к числу):

Пример

var x = 100 / "Apple";  // x будет NaN (не число)

Редактор кода »

Однако если строка содержит числовое значение, результатом будет число:

Пример

var x = 100 / "10";    // x будет 10
Редактор кода »

Вы можете использовать JavaScript глобальную функцию isNaN (), чтобы узнать, является ли значение числом:

Пример

var x = 100 / "Apple";
isNaN(x);               // возвращает true, поскольку x не является числом
Редактор кода »

Следите за NaN. Если Вы используете NaN в математической операции, результатом также будет NaN:

Пример

var x = NaN;
var y = 5;
var z = x + y;         // z будет NaN
Редактор кода »

Или результатом может быть конкатенация:

Пример

var x = NaN;
var y = "5";
var z = x + y;         // z будет NaN5
Редактор кода »

NaN - это число: typeof NaN возвращает число:

Пример

typeof NaN;            // результат "number"
Редактор кода »

Бесконечность

Infinity (или бесконечность) - это значение, возвращаемое JavaScript при вычислении числа вне наибольшего возможное количество.

Пример

var myNumber = 2;
while (myNumber != Infinity) {          // Выполнить до бесконечности
    myNumber = myNumber * myNumber;
}
Редактор кода »

Деление на 0 (ноль) также порождает бесконечность:

Пример

var x =  2 / 0;          // x будет бесконечность
var y = -2 / 0;          // y будет минус бесконечность
Редактор кода »

Infinity - это число: typeof Infinity возвращает число.

Пример

typeof Infinity;        // результат "число"
Редактор кода »

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

JavaScript интерпретирует числовые константы как шестнадцатеричные, если им предшествует 0x.

Пример

var x = 0xFF;           // x будет 255
Редактор кода »

Никогда не записывайте число с начальным нулем (например, 07).
Некоторые версии JavaScript интерпретируют числа как восьмеричные, если они записаны с ведущим нулем.

По умолчанию JavaScript отображает числа как база 10 десятичное число.

Но вы можете использовать метод toString() для вывода чисел из базы 2 в базу 36.

Шестнадцатеричное база 16. Десятичное число база 10. Восьмеричное база 8. Двоичное база 2.

Пример

var myNumber = 32;
myNumber.toString(10);  // результат 32
myNumber.toString(32);  // результат 10
myNumber.toString(16);  // результат 20
myNumber.toString(8);   // результат40
myNumber.toString(2);   // результат 100000
Редактор кода »

Числа могут быть объектами

Обычно JavaScript числа являются примитивными значениями, созданными из литералов:

var x = 123;

Но числа также могут быть определены как объекты с ключевым словом new:

var y = new Number(123);

Пример

var x = 123;
var y = new Number(123);

// typeof x результат число
// typeof y результат объект
Редактор кода »

Не создавайте объекты Number. Это замедляет скорость выполнения.
Ключевое слово new усложняет код. Это может привести к неожиданным результатам:

При использовании оператора == равные числа равны:

Пример

var x = 500;
var y = new Number(500);

// (x == y) имеет значение true, поскольку x и y имеют равные значения
Редактор кода »

При использовании оператора === равные числа не равны, так как оператор === ожидает равенства как в типе, так и в значении.

Пример

var x = 500; 
var y = new Number(500);

// (x === y) имеет значение false, поскольку x и y имеют разные типы
Редактор кода »

Или даже хуже. Объекты не могут быть сравнены:

Пример

var x = new Number(500);
var y = new Number(500);

// (x == y) имеет значение false, так как объекты не могут быть сравнены
Редактор кода »

Обратите внимание на разницу между (x==y) и (x===y).
Сравнение двух объектов JavaScript всегда возвращает false.