Числа в JavaScript: свойства, методы и особенности работы с типом Number

Работа с числами - неотъемлемая часть любого JavaScript-приложения. Однако разработчики часто сталкиваются с непонятным поведением чисел: странными результатами вычислений, ошибками преобразования типов, неверным отображением значений. Эта статья поможет разобраться во всех тонкостях обработки числовых данных в JS. Узнайте, как правильно задавать числа, выполнять вычисления и форматирование, избегать распространенных ловушек. Получите ценные советы по работе с числами от опытного JavaScript-разработчика.

Основы работы с числами в JS

В JavaScript для представления чисел используется тип данных Number. Этот тип позволяет работать как с целыми, так и с дробными числами.

Числа можно задавать разными способами:

  • С помощью литералов - просто записывая числовое значение в коде: let n = 15.
  • С помощью конструктора Number: let n = new Number(15).

Хотя технически второй вариант создает объект-обертку для числа, на практике это редко необходимо. Лучше использовать литералы для задания чисел.

Диапазон и точность

Диапазон чисел в JavaScript ограничен. Максимально возможное число: Number.MAX_VALUE = 1.7976931348623157e+308. Минимальное число равно -Number.MAX_VALUE.

При выполнении вычислений результат округляется с ограниченной точностью. Это может привести к неожиданным эффектам:

0.1 + 0.2 = 0.30000000000000004

Такая неточность - следствие двоичного представления дробных чисел в памяти. Чтобы минимизировать ее:

  • Используйте целые числа вместо дробных где возможно.
  • Применяйте округление с помощью методов вида toFixed().

Кроме обычных чисел, в JavaScript есть три специальных числовых значения:

  1. Infinity - бесконечность, возвращается при переполнении.
  2. -Infinity - минус бесконечность.
  3. NaN - не число, результат некорректной операции.

Эти значения тоже относятся к типу Number, но ведут себя особенным образом. Например, NaN при сравнении не равен даже самому себе.

Проверка типов чисел

Для проверки, является ли значение числом, используются функции:

  • Number.isNaN() - проверка на NaN..
  • Number.isFinite() - проверка на конечное число
  • typeof - возвращает "number" для всех типов Number.

Эти функции помогают корректно определить тип числового значения в JavaScript.

Методы объекта Number

Объект Number в JavaScript содержит удобные методы для работы с числами:

Методы форматирования

  • toFixed() - округление до указанного количества знаков после запятой;
  • toExponential() - представление числа в экспоненциальной форме;
  • toPrecision() - округление до указанной точности.

Эти методы удобно использовать при выводе чисел, например:

let n = 12345.6789; n.toFixed(2); // "12345.68" n.toExponential(3); // "1.235e+4" n.toPrecision(5); // "12345"

Методы преобразования

Также есть методы:

  • toString() - преобразование в строку;
  • valueOf() - преобразование в примитив.

Они реализуют стандартное JavaScript-преобразование, аналогично для других типов данных.

Для математических операций лучше использовать методы объекта Math, а не Number:

Math.round() // округление Math.pow() // возведение в степень

Такой подход оптимальнее по производительности.

Свойства объекта Number

Помимо методов, объект Number содержит полезные свойства для работы с числами в JS.

Константы диапазона чисел

Ранее упомянутые свойства MAX_VALUE и MIN_VALUE задают границы для всех чисел с плавающей точкой. Для безопасной работы с целыми числами есть два дополнительных свойства:

  • Number.MAX_SAFE_INTEGER - максимальное целое число, с которым гарантированно безопасные вычисления.
  • Number.MIN_SAFE_INTEGER - минимальное "безопасное" целое число.

Целые числа за пределами этого диапазона могут давать странные результаты из-за особенностей хранения в памяти.

Константы систем счисления

Есть константы, соответствующие различным системам счисления:

  • Number.MAX_VALUE - максимальное значение.
  • Number.MIN_VALUE - минимальное значение.
  • Number.NaN - константа NaN.
  • Number.NEGATIVE_INFINITY - константа -Infinity.
  • Number.POSITIVE_INFINITY - константа Infinity.

Эти константы удобно использовать для сравнения со специальными числовыми значениями.

Преобразование в числа

В JavaScript существует несколько способов преобразования других типов данных в числа:

  • Конструктор Number().
  • Функции parseInt(), parseFloat().
  • Унарный плюс +.

Number и parseInt/parseFloat

Number() преобразует любые типы данных в число. parseInt()/parseFloat() работают только со строками и имеют более строгие правила разбора.

Например:

Number("123.45") = 123.45 parseInt("123.45") = 123 parseFloat("123.45") = 123.45

Поэтому при работе со строками лучше использовать parseInt()/parseFloat().

Особенности преобразования

Преобразование в число происходит по следующим правилам:

  • Логические значения: true -> 1, false -> 0.
  • Строка: разбирается как число или NaN, если не получается.
  • Null: 0.
  • Undefined: NaN.

Знание этих правил помогает понимать результаты преобразований.

Комментарии