JavaScript имеет только один тип number .
Numbers могут быть записаны с использованием или без знаков после запятой.
JavaScript Числа
JavaScript numbers могут быть написаны с использованием или без десятичных знаков:
пример
var x = 34.00; // A number with decimals
var y = 34; // A number without decimals
Очень большие или экстра маленькие числа могут быть написаны с научной (экспонента) обозначения:
пример
var x = 123e5; // 12300000
var y = 123e-5; // 0.00123
JavaScript числа всегда 64-бит с плавающей точкой
В отличие от многих других языков программирования, JavaScript не определяет различные типы номеров, таких как целые числа, короткие, длинные, с плавающей точкой и т.д.
Номера JavaScript всегда хранятся в виде чисел двойной точности с плавающей запятой, следуя международному стандарту IEEE 754.
Это сохранит формат числа в 64 битах, где число (дробь) хранится в битах от 0 до 51, показатель в битах 52 до 62, а знак в бите 63:
Значение (ака Фракция / Mantissa) | экспонент | Знак |
---|---|---|
52 бита (0 - 51) | 11 бит (52 - 62) | 1 бит (63) |
точность
Целые (номера без периода или показателя нотации) считаются точными до 15 цифр.
пример
var x = 999999999999999; // x will be 999999999999999
var y = 9999999999999999; // y will be 10000000000000000
Попробуй сам " Максимальное количество десятичных знаков 17, но с плавающей запятой не всегда на 100% точным:
Для того, чтобы решить эту проблему выше, он помогает умножать и делить:
шестнадцатеричный
JavaScript интерпретирует числовые константы в шестнадцатеричном, если им предшествует 0x.
Никогда не пишите номер с ведущим нулем (например, 07).
Некоторые версии JavaScript трактовали число как восьмеричное, если они написаны с ведущим нулем.
По умолчанию, JavaScript отображает числа в качестве основания 10 знаков после запятой.
Но вы можете использовать toString() метод для вывода чисел в качестве основания 16 (шестнадцатеричный), основание 8 (восьмеричное), или основанием 2 (двоичный).
пример
var myNumber = 128;
myNumber.toString(16); // returns 80
myNumber.toString(8); // returns 200
myNumber.toString(2); // returns 10000000
Попробуй сам " бесконечность
Бесконечность (или -Infinity) значение JavaScript возвратит если подсчитать число вне как можно большего числа.
пример
var
myNumber = 2;
while (myNumber != Infinity) {
// Execute until Infinity
myNumber = myNumber * myNumber;
}
Попробуй сам " Деление на 0 (ноль) также порождает бесконечность:
Бесконечность номер: typeOf бесконечность возвращает число.
NaN - Не Число
NaN является зарезервированным словом JavaScript , указывающий , что значение не является числом.
Попытка выполнять арифметические действия с нечисловом строки приведет к NaN (не число):
Тем не менее, если строка содержит числовое значение, то результат будет номер:
Вы можете использовать глобальную функцию JavaScript isNaN() , чтобы выяснить , является ли значение числом.
Следите за NaN. Если вы используете NaN в математической операции, результат также будет NaN:
Или результат может быть конкатенации:
NaN является числом, и typeof NaN возвращает номер:
Числа могут быть объектами
Обычно JavaScript номера примитивные значения создаются из литералов: var x = 123
Но цифры также могут быть определены как объекты с ключевыми словами нового: var y = new Number(123)
пример
var x = 123;
var y = new Number(123);
//
typeof x returns number
//
typeof y returns object
Попробуй сам " Не создавайте Количество объектов. Это замедляет скорость выполнения.
new ключевое слово усложняет код. Это может привести к неожиданным результатам:
При использовании == оператора равенства, равное число выглядит равным:
пример
var x = 500;
var y = new Number(500);
// (x == y) is true because x and y have equal values
Попробуй сам " При использовании оператора === равенство, равные числа не равны, так как оператор === ожидает, что равенство в обоих типов и стоимости.
пример
var x = 500;
var y = new Number(500);
// (x === y) is false because x and y have different types
Попробуй сам " Или еще хуже. Объекты нельзя сравнивать:
пример
var x = new Number(500);
var y = new Number(500);
// (x == y) is false because objects cannot be compared
Попробуй сам " Объекты JavaScript нельзя сравнивать.
Проверьте себя с упражнениями!
Упражнение 1 » Упражнение 2» Упражнение 3 » Упражнение 4»