JavaScript Essentials

Essentials — это рубрика, в которой мы рассматриваем наиболее используемые и важные методы для выбранной темы, затрагивая некоторые базовые понятия. Этот пост посвящён числам и математике.

Требования

Рекомендую сначала разобраться в типах и хоть немного, в математике:

JavaScript Essentials: Типы и структура данных

Числа в JavaScript. Основы.

О чём это говорит? Все числа в JavaScript хранятся как числа с плавающей запятой. Вы можете ошибочно подумать, что var x = 1 — это целочисленный тип, но на самом деле это эквивалентно 1.0

Если вы дружите с числами, тогда эти ссылки для вас:

В этой статье мы сфокусируемся на методах работы с числами.

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

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

Важные понятия

  • В JS все числа являются числами с плавающей запятой
  • В JS есть только один числовой тип данных — ‘number’
  • JS как и любой другой язык ограничивает длину числа и его точность.

Общие методы

Ниже приведены блоки кода. Некоторые из них описывают сценарии/задачи, о которых я говорил выше, а другие просто демонстрируют методы.

“Safe” Numbers

“Safe” Numbers — это значения, которые гарантированно будут такими, какими вы их определили. Например, если попытаться использовать число 900719925474099164 в нашем коде, то оно превратится в 900719925474099200, потому что оно за пределами безопасного диапазона.

Как нам узнать диапазон “Safe” numbers?

Используйте следующие команды: Number.isSafeIntegerNumber.MIN_SAFE_INTEGER, и Number.MAX_SAFE_INTEGER.

safe numbers

Как определить, является ли число целочисленным?

В любом случае, все числа в JS одного типа.

Number.isInteger

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

Number.toFixed
Number.toPrecision

Экспоненциальная запись

Другими словами: «запись по-научному».

Number.toExponential

Глобальные Функции vs Number.method

Возможно, вы уже знаете о глобальных функциях, таких как parseInt. Я показал только Number.parseInt().

JS старается отойти от использования глобальных функций и вместо них использовать модули. Новые модульные методы обновляются, а старые глобальные функции нет. isNan() отличается от umber.isNan()

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

Предупреждение: «ванильный» метод, который я показываю ниже, в настоящее время не доступен для использования (можете протестировать его в консоли chrome). О его перспективах читайте здесь.

BigInt

Пока BigInt недоступен, используйте библиотеку.

Конвертация в другую систему исчисления.

toString, parseInt

Методы для литералов

Возможно вы уже пробовали использовать метод с литеральными числами в консоли и получали ошибку 23.toString(2) // syntax error. Как я уже упоминал в разделе «Создание чисел и основы», 23. – допустимое число и указывать 0 не обязательно.

Это значит, что когда вы выполняете 23.toString(2), JS воспринимает это как обычное число. Вообще-то, JS следовало бы понимать, что вы вызываете метод, но, увы.

Решение: выделять литералы скобками (23).toString(2) // "10111" или что-нибудь ещё более странное… 23..toString(2) Но лучше так не делать😅

Нечисловое значение является числом

Я рассказывал об этом в статье JS Essentials: Types & Data Structures.

TLDR; NaN относится к объекту Number, но считается результатом математических операций, который не может считаться числом. Другими словами, название не слишком удачное. «Invalid number» или что-то похожее, звучит лучше.

Проверяйте наличие NaN

NaN-заразная штука, т.е. всё чего он касается превращается в NaN. Это единственное значение не равное самому себе. Мы можем использовать это свойство, чтобы вычислить NaN. Например, таким способом x !== x , если возвратится true, то это NaN .

Object.is, Number.isNaN, isNaN

Способы округлить число

floor, ceil, round, toFixed, toPrecision, bit shift

Экспоненты

** pow **

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

Math.random

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

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

Практика

Перевод статьи CodeDraken : JavaScript Essentials: Numbers and Math