English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В JavaScript есть только один тип данных чисел, и нет отдельного указания на целые и дробные числа.
Таким образом, числа можно записывать в JavaScript с точкой или без нее.
var a = 25; // нет точки var b = 80.05; // есть точкаПроверьте, посмотрите < / >
В обоих случаях тип данных является числом, и он одинаков, независимо от того, имеет ли число точку или нет.
В JavaScript можно использовать научную指数ную запись для сокращения非常大或 очень маленьких чисел, как показано в следующем примере:
let num1 = 957e8; // 95700000000 let num2 = 957e-8; // 0.00000957Проверьте, посмотрите < / >
Числа в JavaScript считаются точными, до 15 знаков после запятой. Это означает, что числа будут округляться после 16 знака после запятой:
let num1 = 999999999999999; // Значение остается неизменным 999999999999999 let num2 = 9999999999999999; // Округление до 10000000000000000Проверьте, посмотрите < / >
В отличие от других языков, JavaScript не определяет различных типов чисел, таких как целые числа, короткие целые числа, длинные целые числа, плавающие числа и т.д.
Числа JavaScript имеют 64-битную точность, что также называется двойной точностью.
Внутреннее представление основано на стандарте IEEE 754.
64 бита распределены между знаком, экспонентой и мантиссой числа, как показано ниже:
Идентификатор | Экспонента | Частное |
---|---|---|
1 bit | 11 bit | 52 bit |
Bit 63 | Bits 62–52 | Bits 51–0 |
Из предыдущих глав можно узнать, что оператор + используется для сложения чисел и объединения строк.
Если это число, то сложат числа. Если это строка, то объединят строки.
Если сложить два числа, результат будет числом:
let x = 50; let y = 10; let z = x + y; // z = 60 (number)Проверьте, посмотрите < / >
Если два строки, результат будет объединением строк:
let x = "50"; let y = "10"; let z = x + y; // z = 5010 (string)Проверьте, посмотрите < / >
Если число и строка, результат будет объединением строк:
let x = 50; let y = "10"; let z = x + y; // z = 5010 (string)Проверьте, посмотрите < / >
Если в строке и числе, результат будет объединением строк:
let x = "50"; let y = 10; let z = x + y; // z = 5010 (string)Проверьте, посмотрите < / >
JavaScript вычисляет выражения слева направо. Разные последовательности могут привести к разным результатам.
В следующем примере сначала сложите 50 + 10, так как x и y — это числа, затем соедините 60 + "30", так как z — это строка:
let x = 50; let y = 10; let z = "30"; let sum = x + y + z; // sum = 6030 (string)Проверьте, посмотрите < / >
Частая ошибка, ожидается результат 60:
let x = 50; let y = 10; let z = "The sum is: " + x + y;Проверьте, посмотрите < / >
Вы можете использовать скобки, чтобы решить эту проблему:
let x = 50; let y = 10; let z = "The sum is: " + (x + y);Проверьте, посмотрите < / >
Строки JavaScript могут содержать числовые значения.
let x = 50; // x — это число let y = "50"; // y - это строка
Если строка содержит числовое значение, вы можете выполнять математические выражения в JavaScript.
Можно выполнить деление:
let x = "50" / "10"; // x = 5Проверьте, посмотрите < / >
Можно выполнить умножение:
let x = "50" * "10"; // x = 500Проверьте, посмотрите < / >
Можно выполнить幂овую операцию:
let x = "5" ** "3"; // x = 125Проверьте, посмотрите < / >
Можно выполнить инкремент:
let x = "50"; x++; // x = 51Проверьте, посмотрите < / >
Можно выполнить вычитание:
let x = "50" - "10"; // x = 40Проверьте, посмотрите < / >
Невозможно выполнить сложение:
let x = "50" + "10"; // x = 5010Проверьте, посмотрите < / >
Примечание:Если добавить два строки, результатом будет串联 строк.
В JavaScript NaN используется как слово для того, чтобы показать, что число не является законным числом.
Если вы пытаетесь выполнить математическое действие с числовыми и нечисловыми значениями, будет возвращен NaN.
var x = 50 / "oldtoolbag.com"; // x = NaN (Not a Number)Проверьте, посмотрите < / >
Но если строка содержит числовое значение, вы можете использовать JavaScript для выполнения математического выражения:
var x = 50 / "10"; // x = 5Проверьте, посмотрите < / >
Вы можете использовать глобальную функцию JavaScript isNaN()Функция для определения того, является ли значение числом:
var x = 50 / "oldtoolbag.com"; isNaN(x); // Возвращает true, потому что x не является числомПроверьте, посмотрите < / >
Если присвоить значение NaN в переменную, используемую в операции NaN, даже если другой операнд является законным числом, это также приведет к значению:
var x = NaN; var y = 27; var z = x + y; // z = NaNПроверьте, посмотрите < / >
NaN является числом; typeof NaN возвращает number:
typeof NaN; // Возвращает "number"Проверьте, посмотрите < / >
Infinity (положительная бесконечность) или -Infinity (отрицательная бесконечность), если вычисляемое число превышает максимальное число, доступное в JavaScript, то будет возвращено.
Для неопределенных значений также будут наблюдаться эти ситуации, например, при делении на ноль:
var x = 5 / 0; // Возвращает бесконечность var y = -5 / 0; // Возвращает минус бесконечностьПроверьте, посмотрите < / >
Технически говоря, Infinity (положительная бесконечность) будет отображаться как 1.797693134862315E+308, когда число выходит за верхний предел числа в JavaScript.
Таким же образом, -Infinity (отрицательное бесконечность) будет отображаться как -1.797693134862316E+308, когда число выходит за нижний предел.
Infinity является числом: typeof Infinity возвращает number:
typeof Infinity; // возвращает "number"Проверьте, посмотрите < / >
Число Infinity также можно использовать в цикле:
var num = 5; while (num != Infinity) { // Этот код будет выполняться до num = ∞ }Проверьте, посмотрите < / >
По умолчанию, JavaScript отображает числа с основанием10дляОснованиеДробные.
Числа также можно выражать в шестнадцатеричном (основание 16), двоичном (основание 2) и восьмеричном (основание 8) виде.
Префикс шестнадцатеричного числа - 0x:
var x = 0xFF; // x = 255Проверьте, посмотрите < / >
Префикс двоичного числа - 0b:
var x = 0b1111; // x = 15Проверьте, посмотрите < / >
Не пишите цифру, начинающуюся с нуля (например, 0121). Если вы напишете число с префиксом нуля, JavaScript интерпретирует его как восьмеричное:
var x = 016;Проверьте, посмотрите < / >
Вы можете использовать этотtoString()Метод возвращает числовой строку от 2 до 36.
в шестнадцатеричном видеОснование 16в десятеричном видеОснование 10в восьмеричном видеОснование 8в двоичном видеОснование 2.
var num = 255; num.toString(10); // возвращает 255 num.toString(16); // возвращает ff num.toString(8); // возвращает 377 num.toString(2); // возвращает 11111111Проверьте, посмотрите < / >
Обычно, числа в JavaScript создаются из литералов:
var num = 50;
Но также можно использовать ключевое слово new для определения числа как объекта:
var num = new Number(50);
Чтобы проверить разницу между ними, мы初始化им числовой элемент и числовой объект.
var num1 = 50; var num2 = new Number(50); typeof num1 // возвращает number typeof num2 // возвращает objectПроверьте, посмотрите < / >
Примечание:Не создавайте числа в виде объектов. Это снизит производительность и может привести к неожиданным результатам.
При использовании оператора == числа равны:
var num1 = 50; var num2 = new Number(50); document.write(num1 == num2); // Возвращает true, так как num1 и num2 имеют равные значенияПроверьте, посмотрите < / >
При использовании оператора === равные числа не равны, так как оператор === ожидает равных значений и типов:
var num1 = 50; var num2 = new Number(50); document.write(num1 === num2); // Возвращает false, так как num1 и num2 имеют различные типыПроверьте, посмотрите < / >
Объекты не могут быть сравнены:
var num1 = new Number(50); var num2 = new Number(50); document.write(num1 == num2); // Возвращает false, так как num1 и num2 являются различными объектами document.write(num1 === num2); // Возвращает false, так как num1 и num2 являются различными объектамиПроверьте, посмотрите < / >
Обратите внимание на различие между (==) и (===). При сравнении двух объектов JavaScript всегда будет возвращаться false.