Номера JavaScript
JavaScript имеет только один тип числа. Числа можно записывать как с десятичными знаками, так и без них.
Пример
let x = 3.14; // A number with decimals
let y = 3; // A number without decimals
Очень большие или очень маленькие числа могут быть записаны в экспоненциальном представлении:
Пример
let x = 123e5; // 12300000
let 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 цифр.
Пример
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
Максимальное количество десятичных знаков — 17.
Плавающая точность
Арифметика с плавающей запятой не всегда точна на 100%:
let x = 0.2 + 0.1;
Чтобы решить проблему выше, это помогает умножить и разделить:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Добавление чисел и строк
ПРЕДУПРЕЖДЕНИЕ !!
JavaScript использует оператор + как для сложения, так и для конкатенации.
Добавляются числа. Строки объединены.
Если вы добавите два числа, результатом будет число:
Пример
let x = 10;
let y = 20;
let z = x + y;
Если вы добавите две строки, результатом будет конкатенация строк:
Пример
let x = "10";
let y = "20";
let z = x + y;
Если вы добавите число и строку, результатом будет конкатенация строк:
Пример
let x = 10;
let y = "20";
let z = x + y;
Если вы добавите строку и число, результатом будет конкатенация строк:
Пример
let x = "10";
let y = 20;
let z = x + y;
Распространенной ошибкой является ожидание, что этот результат будет равен 30:
Пример
let x = 10;
let y = 20;
let z = "The result is: " + x + y;
Распространенной ошибкой является ожидание, что этот результат будет 102030:
Пример
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
Интерпретатор JavaScript работает слева направо.
Сначала добавляется 10 + 20, потому что x и y являются числами.
Затем 30 + «30» объединяются, потому что z — это строка.
Числовые строки
Строки JavaScript могут иметь числовое содержимое:
let x = 100; // x is a number
let y = "100"; // y is a
string
JavaScript попытается преобразовать строки в числа во всех числовых операциях:
Это будет работать:
let x = "100";
let y = "10";
let z = x / y;
Это также будет работать:
let x = "100";
let y = "10";
let z = x * y;
И это будет работать:
let x = "100";
let y = "10";
let z = x - y;
Но это не сработает:
let x = "100";
let y = "10";
let z = x + y;
В последнем примере JavaScript использует оператор + для объединения строк.
NaN — не число
NaN
это зарезервированное слово JavaScript, указывающее, что число не является допустимым числом.
Попытка выполнить арифметические действия с нечисловой строкой приведет к NaN
(не числу):
Пример
let x = 100 / "Apple";
Однако, если строка содержит числовое значение, результатом будет число:
Пример
let x = 100 / "10";
Вы можете использовать глобальную функцию JavaScript, isNaN()
чтобы узнать, является ли значение не числом:
Пример
let x = 100 / "Apple";
isNaN(x);
Следите за NaN
. Если вы используете NaN
в математической операции, результатом также будет NaN
:
Пример
let x = NaN;
let y = 5;
let z = x + y;
Или результатом может быть конкатенация типа NaN5:
Пример
let x = NaN;
let y = "5";
let z = x + y;
NaN
число: typeof NaN
возвращает number
:
Пример
typeof NaN;
бесконечность
Infinity
(или -Infinity
) — это значение, которое JavaScript вернет, если вы вычислите число за пределами максимально возможного числа.
Пример
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
Деление на 0 (ноль) также генерирует Infinity
:
Пример
let x = 2 / 0;
let y = -2 / 0;
Infinity
это число: typeof Infinity
возвращает number
.
Пример
typeof Infinity;
шестнадцатеричный
JavaScript интерпретирует числовые константы как шестнадцатеричные, если им предшествует 0x.
Пример
let x = 0xFF;
Никогда не пишите число с ведущим нулем (например, 07).
Некоторые версии JavaScript интерпретируют числа как восьмеричные, если они написаны с начальным нулем.
По умолчанию JavaScript отображает числа как десятичные числа с основанием 10 .
Но вы можете использовать этот toString()
метод для вывода чисел от основания 2
до основания 36 .
Шестнадцатеричный - это основание 16 . Десятичное число по основанию 10 . Восьмеричная - это основание 8 . Двоичный - это основание 2 .
Пример
let myNumber = 32;
myNumber.toString(10);
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
Числа JavaScript как объекты
Обычно числа JavaScript представляют собой примитивные значения, созданные из литералов:
let x = 123;
Но числа также могут быть определены как объекты с помощью ключевого слова new
:
let y = new Number(123);
Пример
let x = 123;
let y = new Number(123);
Не создавайте числовые объекты.
Ключевое new
слово усложняет код и замедляет скорость выполнения.
Числовые объекты могут давать неожиданные результаты:
При использовании ==
оператора x и y равны :
let x = 500;
let y = new Number(500);
При использовании ===
оператора x и y не равны .
let x = 500;
let y = new Number(500);
Обратите внимание на разницу между (x==y)
и (x===y)
.
(x == y)
правда или ложь?
let x = new Number(500);
let y = new Number(500);
(x === y)
правда или ложь?
let x = new Number(500);
let y = new Number(500);
Comparing two JavaScript objects always returns false.
Complete JavaScript Number Reference
For a complete Number reference, visit our:
Complete JavaScript Number Reference.
The reference contains descriptions and examples of all Number properties and methods.