Откройте для себя все тонкости числового типа данных JavaScript
В JavaScript числа играют решающую роль в выполнении математических операций и представлении числовых данных. Понимание того, как числа работают в JavaScript, важно для любого программиста.
Числовой тип данных в JavaScript
В JavaScript числа представлены с использованием типа данных Number. Этот тип данных позволяет работать с числами с плавающей запятой, включая целые и десятичные числа. В отличие от некоторых других языков программирования, в JavaScript нет отдельного типа данных для целых чисел.
Чтобы определить число в JavaScript, вы можете просто присвоить числовое значение переменной:
let age = 25; let pi = 3.14;
Основные операции с числами
JavaScript предоставляет различные операторы для выполнения арифметических операций над числами. К ним относятся сложение (+
), вычитание (-
), умножение (*
) и деление (/
). Вот некоторые примеры:
let x = 10; let y = 5; let sum = x + y; // 15 let difference = x - y; // 5 let product = x * y; // 50 let quotient = x / y; // 2
Числовые литералы
JavaScript позволяет вам определять числа с помощью литералов. Числовой литерал — это последовательность цифр, представляющая определенное числовое значение. Вот несколько примеров числовых литералов:
let count = 100; // integer literal let price = 99.99; // floating-point literal let binaryNumber = 0b1010; // binary literal (0b prefix) let octalNumber = 0o77; // octal literal (0o prefix) let hexadecimalNumber = 0xFF; // hexadecimal literal (0x prefix)
Числовые литералы могут быть выражены в различных системах счисления, таких как двоичная, восьмеричная и шестнадцатеричная, с использованием соответствующих префиксов.
Свойства номера
Объект Number в JavaScript имеет несколько свойств, предоставляющих полезную информацию о числах. Давайте рассмотрим некоторые из наиболее часто используемых свойств:
Number.MAX_VALUE
: представляет максимальное положительное значение, которое может быть представлено в JavaScript.Number.MIN_VALUE
: представляет наименьшее положительное значение больше нуля, которое может быть представлено.Number.NaN
: представляет специальное значение «Не число» (NaN), которое указывает на недопустимую числовую операцию.Number.POSITIVE_INFINITY
: представляет положительную бесконечность, которая возникает, когда число превышает верхний предел представляемых значений.Number.NEGATIVE_INFINITY
: представляет отрицательную бесконечность, которая возникает, когда число меньше нижнего предела представимых значений.
Вот пример, демонстрирующий использование этих свойств:
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308 console.log(Number.MIN_VALUE); // 5e-324 console.log(Number.NaN); // NaN console.log(Number.POSITIVE_INFINITY); // Infinity console.log(Number.NEGATIVE_INFINITY); // -Infinity
Числовые методы
Объект Number в JavaScript предоставляет различные методы, позволяющие выполнять операции и преобразования над числами. Давайте рассмотрим некоторые из наиболее часто используемых методов:
Число.parseInt()
Метод Number.parseInt()
используется для анализа строки и преобразования ее в целое число. Он принимает строку в качестве аргумента и возвращает проанализированное целочисленное значение. Вот пример:
let ageString = "25"; let age = Number.parseInt(ageString); console.log(age); // 25
Число.parseFloat()
Метод Number.parseFloat()
похож на Number.parseInt()
, но он анализирует строку и преобразует ее в число с плавающей запятой. Вот пример:
let priceString = "99.99"; let price = Number.parseFloat(priceString); console.log(price); // 99.99
Число.isNaN()
Метод Number.isNaN()
используется для определения того, является ли значение NaN (не числом). Он возвращает true
, если предоставленное значение равно NaN, и false
в противном случае. В отличие от глобальной функции isNaN()
, Number.isNaN()
не выполняет никакого приведения типов. Вот пример:
console.log(Number.isNaN(10)); // false console.log(Number.isNaN("hello")); // false console.log(Number.isNaN(NaN)); // true
Число.isFinite()
Метод Number.isFinite()
определяет, является ли значение конечным числом. Он возвращает true
, если предоставленное значение является конечным числом, и false
для Infinity
, -Infinity
и NaN
. Этот метод не выполняет приведение типов. Вот пример:
console.log(Number.isFinite(10)); // true console.log(Number.isFinite(Infinity)); // false console.log(Number.isFinite(NaN)); // false
Число.isInteger()
Метод Number.isInteger()
проверяет, является ли значение целым числом. Он возвращает true
, если значение является целым числом, и false
в противном случае. Этот метод не выполняет приведение типов. Вот пример:
console.log(Number.isInteger(10)); // true console.log(Number.isInteger(10.5)); // false console.log(Number.isInteger("10")); // false
Номер.прототип.toFixed()
Метод Number.prototype.toFixed()
используется для форматирования числа с заданным количеством цифр после запятой. Он возвращает строковое представление числа с указанной точностью.
let pi = Math.PI; let formattedPi = pi.toFixed(2); console.log(formattedPi); // "3.14"
В этом примере мы используем toFixed(2)
для форматирования значения pi
с двумя цифрами после запятой.
Число.прототип.toPrecision()
Метод Number.prototype.toPrecision()
используется для форматирования числа до заданной длины, включая как целые, так и десятичные цифры. Он возвращает строковое представление числа с указанной точностью.
let number = 123.456789; let formattedNumber = number.toPrecision(5); console.log(formattedNumber); // "123.46"
В этом примере мы используем toPrecision(5)
для форматирования number
с точностью до 5 цифр.
Number.prototype.toExponential()
Метод Number.prototype.toExponential()
используется для форматирования числа с использованием экспоненциальной записи. Он возвращает строковое представление числа в экспоненциальной форме.
let value = 1000000; let formattedValue = value.toExponential(); console.log(formattedValue); // "1e+6"
Метод toExponential()
позволяет более лаконично представлять большие и малые числа в экспоненциальном представлении.
Число.isSafeInteger()
Метод Number.isSafeInteger()
используется для определения того, находится ли заданное число в диапазоне безопасных целочисленных значений. Он возвращает true
, если число безопасно, и false
в противном случае.
console.log(Number.isSafeInteger(42)); // true console.log(Number.isSafeInteger(9007199254740992)); // false
В приведенном выше примере первый вызов Number.isSafeInteger()
возвращает true
, поскольку 42
находится в диапазоне безопасных целых чисел. Второй вызов возвращает false
, так как 9007199254740992
превышает безопасный целочисленный диапазон.
Безопасный целочисленный диапазон
JavaScript имеет определенный диапазон, в котором целые числа могут быть представлены безопасно и точно. Безопасный диапазон целых чисел определяется константами Number.MAX_SAFE_INTEGER
и Number.MIN_SAFE_INTEGER
. Любое целое число в этом диапазоне может быть сохранено и обработано без потери точности.
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991 console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
Важно отметить, что значения за пределами этого безопасного целочисленного диапазона могут быть представлены неточно из-за базового числового представления JavaScript.
Округление чисел и точность
JavaScript использует формат с плавающей запятой IEEE 754 для представления чисел, что может привести к ошибкам округления при выполнении определенных вычислений. Для учета этих ошибок JavaScript предоставляет свойство Number.EPSILON
, которое представляет наименьшую разницу между двумя представимыми числами.
console.log(0.1 + 0.2 === 0.3); // false console.log(Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON); // true
Сравнивая разницу между ожидаемым результатом и фактическим результатом с Number.EPSILON
, мы можем определить, находятся ли значения в пределах допустимой погрешности.
Двоичные литералы
Для представления двоичных чисел в JavaScript вы можете использовать префикс 0b
, за которым следует последовательность двоичных цифр (0 и 1). Это обеспечивает более интуитивное и явное представление двоичных значений.
let binaryNumber = 0b1010; // Binary representation of 10 console.log(binaryNumber); // 10
Использование префикса 0b
указывает на то, что значение является двоичным числом, что повышает читаемость кода и уменьшает неоднозначность.
Восьмеричные литералы
Точно так же JavaScript теперь поддерживает представление восьмеричного числа с использованием префикса 0o
, за которым следует последовательность восьмеричных цифр (от 0 до 7). Это упрощает представление восьмеричных значений в коде.
let octalNumber = 0o77; // Octal representation of 63 console.log(octalNumber); // 63
Используя префикс 0o
, разработчики могут явно указывать восьмеричные значения, повышая ясность кода.
Заключение
В этом всеобъемлющем обзоре мы рассмотрели тип данных JavaScript Number и его различные функции. Понимание того, как JavaScript обрабатывает числа, имеет основополагающее значение для выполнения математических операций и эффективного управления числовыми данными в ваших программах JavaScript.
Спасибо, что дочитали до этого момента! Если вы еще не являетесь участником Medium, подумайте о том, чтобы поддержать меня. Таким образом, у вас будет неограниченный доступ ко всему контенту на Medium, а я также получу небольшую комиссию.
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу