Перейти к содержимому

Числа в JavaScript

Введение в числа JavaScript

JavaScript, будучи языком динамического программирования, поддерживает различные типы чисел. Понимание этих чисел имеет решающее значение для эффективной разработки. В этой статье мы подробно рассмотрим числа в JavaScript, приводя практические примеры и полезные сведения как для начинающих, так и для опытных программистов.

Понимание типов чисел

  • Обычные числа: JavaScript использует 64-битный формат IEEE-754, широко известный как «числа с плавающей запятой двойной точности». Это стандартный тип чисел в JavaScript.
  • BigInt числа: Предназначены для представления целых чисел произвольной длины. Используются в специфических сценариях, где требуется высокая точность.

Запись чисел в JavaScript

javascript
let billion = 1e9;  // 1 billion
let ms = 1e-6;     // One microsecond

Использование научной нотации упрощает запись больших или очень маленьких чисел.

Шестнадцатеричные, двоичные и восьмеричные числа

JavaScript поддерживает различные системы счисления:

  • Шестнадцатеричная (например, 0xFF)
  • Двоичная (например, 0b1010)
  • Восьмеричная (например, 0o744)

Метод toString

Преобразование чисел в другие системы счисления:

Output appears here after Run.

Методы округления

JavaScript предоставляет несколько функций для округления чисел:

  1. Math.floor(): Округляет число вниз до ближайшего целого.
Output appears here after Run.
  1. Math.ceil(): Округляет число вверх до ближайшего целого.
Output appears here after Run.
  1. Math.round(): Округляет число до ближайшего целого в соответствии со стандартными математическими правилами.
Output appears here after Run.
  1. Math.trunc(): Удаляет все дробные цифры, по сути усекая число.
Output appears here after Run.

Работа с неточными вычислениями

Для разработчиков на JavaScript важно уметь работать с арифметикой с плавающей запятой и её особенностями, такими как известный случай 0.1 + 0.2 != 0.3.

Output appears here after Run.

Специальные числовые значения

Понимание Infinity, -Infinity и NaN в JavaScript:

  • Infinity: Представляет бесконечность, значение, большее любого другого числа. Этот результат получается при делении числа на ноль или при превышении верхнего предела чисел с плавающей запятой.
  • -Infinity: Представляет отрицательную бесконечность, значение, меньшее любого другого числа. Возникает при делении отрицательного числа на ноль или при превышении нижнего предела чисел с плавающей запятой.
  • NaN: Аббревиатура от "Not-a-Number" (не число). Это значение возникает при выполнении неопределённой или невозможной математической операции, например, деления нуля на ноль.

Методы isNaN() и isFinite() для проверки этих специальных значений:

  • isNaN(): Проверяет, является ли значение NaN. Обратите внимание, что глобальная функция isNaN() выполняет неявное приведение типов, поэтому isNaN('hello') возвращает true. Для строгой проверки типа используйте Number.isNaN(), которая возвращает true только если значение действительно является NaN.
  • isFinite(): Проверяет, является ли значение конечным числом, возвращая false для Infinity, -Infinity или NaN.

Примеры:

  • isNaN('hello') возвращает true, так как строка приводится к NaN.
  • isFinite(2 / 0) возвращает false, поскольку 2 / 0 даёт Infinity, что не является конечным числом.

Числовое преобразование: parseInt и parseFloat

Эти функции парсят строку и возвращают целое или дробное число:

parseInt используется для преобразования строки в целое число. Вот как это работает:

  • Чтение начинается слева и останавливается на первом символе, который не является частью числа.
  • Если первый символ не может быть преобразован в число, возвращается NaN.
Output appears here after Run.

parseFloat используется для преобразования строки в число с плавающей запятой. Вот пример:

Output appears here after Run.

В этом примере parseFloat читает строку до тех пор, пока не встретит символ, не входящий в нотацию числа с плавающей запятой, после чего возвращает собранное до этого момента число.

Заключение

Обработка чисел в JavaScript отличается гибкостью и удовлетворяет широкий спектр потребностей программирования. Освоив эти концепции, разработчики смогут писать более надёжный и эффективный код. Справочники по другим типам данных см. в статьях Строки и Булевы значения.

Практика

What is true about JavaScript numbers?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.