Числа JavaScript

В JavaScript есть только один тип числовых значений.

При записи числовых значений можно использовать или не использовать точку после запятой.

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 = "The result is: " + x + y;

Попробуйте сами

Частая ошибка - это думать, что результат должен быть 102030:

Пример

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

Попробуйте сами

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

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

Потому что z является строкой, 30 + "30" будет каскадироваться.

числовая строка

Строки 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 (Not a Number):

Пример

var x = 100 / "Apple";  // x будет NaN (Not a Number)

Попробуйте сами

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

Пример

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 возвращает number:

Пример

typeof NaN;             // Возвращает "number"

Попробуйте сами

Infinity

Infinity (или -Infinityявляется значением, которое JavaScript возвращает при вычислении числа, когда оно выходит за пределы возможного диапазона значений.

Пример

var myNumber = 2;
while (myNumber != Infinity) {          // Выполняется до Infinity
    myNumber = myNumber * myNumber;
}

Попробуйте сами

деление на 0 (ноль) также генерирует Infinity:

Пример

var x =  2 / 0;          // x будет Infinity
var y = -2 / 0;          // y будет -Infinity

Попробуйте сами

Infinity является числом:typeOf Infinity возвращает number.

Пример

typeof Infinity;        // Возвращает "number"

Попробуйте сами

шестнадцатеричные

JavaScript интерпретирует префикс 0x значения числовых констант объясняются шестнадцатеричными.

Пример

var x = 0xFF;             // x будет 255.

Попробуйте сами

Никогда не пишите числа с префиксом нуля (например, 07).

Некоторые версии JavaScript интерпретируют числа с префиксом нуля как восьмеричные.

По умолчанию, Javascript отображает числа в десятичной дробной форме.

Но вы можете использовать toString() Метод выводит число в шестнадцатеричном, восьмеричном или двоичном формате.

Пример

var myNumber = 128;
myNumber.toString(16);     // Возвращает 80
myNumber.toString(8);      // Возвращает 200
myNumber.toString(2);      // Возвращает 10000000

Попробуйте сами

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

Обычно значения JavaScript чисел создаются литералами: var x = 123

Но также можно использовать ключевое слово new Определено как объект: var y = new Number(123)

Пример

var x = 123;
var y = new Number(123);
// typeof x возвращает number
// typeof y возвращает object

Попробуйте сами

Не создавайте числовые объекты. Это может замедлить выполнение.

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, потому что объекты не могут быть сравнены

Попробуйте сами

Объекты JavaScript не могут быть сравнены.