Нажмите "Enter" для перехода к содержанию

Работа с числами и математическими методами в JavaScript

0

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

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

  • В JavaScript существует всего один числовой тип. Таким образом, значения 5 и 5.12 принадлежат к одному и тому же типу.
  • JS использует формат 64-битных чисел двойной точности по стандарту IEEE 754.

Это означает, что все числа в JavaScript имеют плавающую запятую. Пусть вас не обманывает запись var x=1 , на самом деле это float, равный 1.0 .

Если вы действительно хотите разобраться в особенностях чисел в JS, загляните сюда:

А в этой статье мы сконцентрируемся на методах работы со значениями типа Number.

Создание чисел

Объявить переменную, содержащую числовое значение, можно с помощью ключевых слов let (если она будет изменяться) или const (если не будет). Перед отрицательными числами ставится – :

Единственный 0 в целой или дробной части числа можно не указывать, но все же стоит это делать для лучшей читаемости кода.

Будьте осторожны с ограничениями по размеру:

Конвертация в число:

Можно работать и в других системах счисления:

Важные принципы

  • все числа – с плавающей точкой;
  • все числа имеют один тип – “number”;
  • как и в других языках, в JS существуют ограничения по максимальному размеру и точности чисел.

Основные методы

Безопасные числа

Скорее всего, вы хотите, чтобы значение числа всегда оставалось тем же самым, что вы ему задали. Но если вы используете в коде, к примеру, число 900719925474099164 оно превратится в 900719925474099200. Дело в том, что оно выходит за пределы так называемого безопасного диапазона.

Узнать эти пределы можно, обратившись к свойствам объекта Number MIN_SAFE_INTEGER и MAX_SAFE_INTEGER. А с помощью функции Number.isSafeInteger можно определить, является ли число безопасным.

Целое ли число?

Используйте метод isInteger объекта Number . Если число не имеет десятичной части, он возвращает true . Обратите внимание, что числа с пустой десятичной частью автоматически конвертируются в целые.

Есть более короткий, но менее читаемый способ проверить, целое ли число:

Изменение количества знаков после запятой

Используйте метод Number.toFixed , который принимает количество знаков десятичной части, а возвращает строковое представление числа в нужном формате.

Также можно воспользоваться методом Number.toPrecision , которому нужно передать количество значащих цифр числа. На выходе также получается строка:

Преобразование в экспоненциальную форму

Экспоненциальная форма известна также известна как научная нотация. Для преобразования существует специальный метод toExponential . Его единственный необязательный параметр – количество цифр после запятой.

Глобальные функции для работы с числами и методы Number

Вы, возможно, знаете, что существуют глобальные функции вроде parseInt , но только что мы использовали Number.parseInt() .

Дело в том, что последний стандарт JavaScript пытается модуляризировать глобальные сущности и обновляет некоторые существующие модули. Например, метод isNaN отличается от нового метода Number.isNaN .

Работа с большими числами

Тип BigInt на данный момент находится в статусе предложения и недоступен в ряде браузеров. Большие числа создаются путем добавления n в конец числа или с помощью конструктора.

Пока нет полной поддержки BigInt, вы можете использовать библиотеку bignumber.js.

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

Перевести число из десятичной системы в другую можно с помощью метода toString , указав желаемое основание системы (от 2 до 36). Для обратного преобразования используйте метод parseInt :

Методы числовых литералов

Возможно, вы попытались применить какой-нибудь метод к числовому литералу ( 23.toString(2) ) и получили синтаксическую ошибку. Это связано со специфическим представлением чисел в JavaScript. Валидная форма для числа 23 – 23. или 23.0 (0 в дробной части можно не указывать).

Когда вы пишете 23.toString(2) JavaScript считает эту запись числом и не понимает, что вызывается метод.

Решением может быть использование скобок или двух точек для указания дробной части (хотя это довольно непонятная запись):

Не число – это число

Подробное объяснение этого феномена можно найти в статье JS Essentials: Types & Data Structures.

Коротко говоря, NaN является объектом класса Number, но определяется как результат математических операций, значение которых количественно число не является. Правильнее было бы назвать его Invalid Number.

NaN превращает все, с чем имеет дело, в NaN .

Проверка на NaN

Это единственное значение в JavaScript, которое не равно самому себе. Мы можем использовать это, применяя проверку x !==x . Если это условие возвращает true , то x – это NaN .

Помимо этого можно использовать методы Object.is , isNaN и новый метод Number.isNaN . Обратите внимание, два последних метода ведут себя по-разному с нечисловыми значениями.

Способы округления чисел

Возведение в степень

В JavaScript существует специальный оператор степени – ** . Также можно воспользоваться методом Math.pow .

Генерация случайного числа

Метод Math.random генерирует дробное число в диапазоне от 0 (включая) до 1 (не включая).

Вот небольшой пример: создадим сет – набор уникальных значений, заполним его случайными числами с помощью метода getRandom и отсортируем:

Математические функции

В модуле Math очень много полезных методов, которые вы можете найти в документации. Все они имеют довольно очевидный принцип работы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *