Объект Math в JavaScript
Объект Math в JavaScript: округление, степени, корни, случайные числа, тригонометрия, константы Math.PI и Math.E — с примерами и типичными ошибками.
Введение в объект Math JavaScript
Math — это встроенный объект JavaScript, объединяющий математические константы и функции. В отличие от большинства объектов, вы никогда не создаёте его экземпляр с помощью new — Math является статическим, поэтому всё вызывается непосредственно на нём: Math.round(...), Math.PI и так далее. Все его методы работают с числами и дополняют стандартные арифметические операторы (+, -, *, /, %, **).
Это руководство охватывает назначение каждого распространённого метода, типичные ошибки (отрицательное округление, генерация случайного числа в диапазоне, поведение при некорректных входных данных) и примеры применения этих функций в реальном коде — в анимации и финансовых вычислениях.
Популярные функции Math
| Функция | Описание |
|---|---|
Math.abs(x) | Возвращает абсолютное значение x. |
Math.ceil(x) | Возвращает наименьшее целое число, большее или равное x. |
Math.floor(x) | Возвращает наибольшее целое число, меньшее или равное x. |
Math.round(x) | Округляет x до ближайшего целого числа. |
Math.max(x, y, ...) | Возвращает наибольшее из нуля или более чисел, переданных в качестве аргументов. |
Math.min(x, y, ...) | Возвращает наименьшее из нуля или более чисел, переданных в качестве аргументов. |
Math.pow(x, y) | Возвращает x, возведённое в степень y. |
Math.sqrt(x) | Возвращает квадратный корень из x. |
Math.cbrt(x) | Возвращает кубический корень из x. |
Math.random() | Возвращает псевдослучайное число от 0 до 1. |
Math.log(x) | Возвращает натуральный логарифм (логарифм по основанию e) числа x. |
Math.log10(x) | Возвращает логарифм числа x по основанию 10. |
Math.exp(x) | Возвращает e^x, где x — аргумент, а e — число Эйлера (приблизительно 2.71828). |
Math.sin(x) | Возвращает синус числа x (x задаётся в радианах). |
Math.cos(x) | Возвращает косинус числа x (x задаётся в радианах). |
Math.tan(x) | Возвращает тангенс числа x (x задаётся в радианах). |
Math.asin(x) | Возвращает арксинус числа x в радианах. |
Math.acos(x) | Возвращает арккосинус числа x в радианах. |
Math.atan(x) | Возвращает арктангенс числа x в радианах. |
Math.atan2(y, x) | Возвращает арктангенс частного своих аргументов (y/x). |
Основы: ключевые функции Math в JavaScript
Math.round()
Функция Math.round() округляет число до ближайшего целого. Если дробная часть равна 0.5 или больше, число округляется вверх; в противном случае — вниз.
Пример:
Подводный камень — отрицательные числа и .5: Math.round() при равноудалённости всегда округляет в сторону положительной бесконечности, а не «от нуля». Поэтому Math.round(-2.5) равно -2, а не -3. Если нужно просто отбросить дробную часть, используйте Math.trunc().
Math.ceil()
Функция Math.ceil() округляет число вверх до следующего наибольшего целого, независимо от дробной части.
Пример:
Math.floor()
В противоположность ей, Math.floor() округляет число вниз до ближайшего целого, отбрасывая дробную часть.
Пример:
Math.sqrt()
Функция Math.sqrt() возвращает квадратный корень из числа.
Пример:
Math.pow()
Math.pow() возводит число в указанную степень. В современном JavaScript для того же результата можно использовать оператор возведения в степень ** — 4 ** 2 эквивалентно Math.pow(4, 2).
Пример:
Math.trunc() и Math.sign()
Math.trunc() удаляет дробную часть числа, оставляя целую часть нетронутой — без какого-либо округления. Это делает его предсказуемым как для положительных, так и для отрицательных чисел, в отличие от Math.floor() (который округляет в сторону -Infinity).
Math.sign() возвращает знак числа: 1 для положительных, -1 для отрицательных и 0 (или -0) для нуля.
Пример:
Обработка некорректных входных данных: NaN
Методы Math не генерируют исключение при неверных данных — они возвращают NaN («Not a Number»). Например, квадратный корень из отрицательного числа или вызов любого метода с нечисловым значением даёт NaN. Используйте Number.isNaN(), чтобы проверить результат перед его использованием.
Пример:
Продвинутые операции: тригонометрия и не только
Math.sin(), Math.cos(), Math.tan()
Эти функции незаменимы для тригонометрических вычислений и соответствуют синусу, косинусу и тангенсу.
Пример:
Math.random()
Math.random() генерирует псевдослучайное число от 0 (включительно) до 1 (не включая). Широко применяется в разработке игр и симуляциях.
Пример:
Самая распространённая задача — случайное целое число в диапазоне. Само по себе Math.random() редко даёт то, что нужно; обычно требуется целое число между min и max. Для этого масштабируют значение от 0 до 1 и применяют floor. Следующая формула возвращает целое число от min до max включительно:
Обратите внимание: Math.random() не является криптографически безопасным. Для генерации случайных данных в целях безопасности (токены, пароли) используйте crypto.getRandomValues().
Math.max() и Math.min()
Эти функции возвращают наибольшее и наименьшее число из набора аргументов соответственно.
Пример:
Реальные применения: использование функций Math
Математические функции JavaScript — это не просто теория; они имеют практическое применение в самых разных областях: анимация, финансовые расчёты, научные вычисления и многое другое.
Практический пример: анимация с тригонометрией
Представьте веб-анимацию, в которой объект движется по круговой траектории. Это движение можно реализовать с помощью функций Math.sin() и Math.cos().
// Circular motion parameters
let radius = 20;
let angle = 0;
function animateCircle() {
let x = radius * Math.cos(angle);
let y = radius * Math.sin(angle);
angle += 0.01;
// Update the object's position here
}Интерактивный обучающий инструмент: создание математической викторины
С помощью математических функций JavaScript можно разработать интерактивную викторину, предлагающую пользователям случайные арифметические задачи.
Дополнительно: константы Math и не только
Помимо набора функций, объект Math JavaScript предоставляет несколько важных математических констант. Это не просто фиксированные значения — они являются фундаментальными элементами различных сложных вычислений, особенно в научной и математической области.
Math.PI
Math.PI представляет отношение длины окружности к её диаметру. Оно приблизительно равно 3.14159. Эта константа незаменима в вычислениях, связанных с окружностями и сферами, например при вычислении площади круга (Area = Math.PI * radius * radius) или длины окружности (Circumference = 2 * Math.PI * radius).
Пример:
Math.E
Math.E, известное как число Эйлера, приблизительно равно 2.718. Это основание натурального логарифма, широко используемое в расчётах роста, вычислении сложных процентов и анализе комплексных чисел. В JavaScript Math.E часто применяется совместно с функцией Math.exp(), которая возводит Math.E в указанную степень.
Пример:
Math.LN2
Math.LN2 представляет натуральный логарифм числа 2, приблизительно равный 0.693. Эта константа особенно полезна в алгоритмах с логарифмическими вычислениями, например при расчёте времени удвоения в моделях роста популяции или в некоторых финансовых расчётах.
Пример:
Другие важные константы
- Math.LN10: представляет натуральный логарифм числа 10, полезен при масштабировании логарифмических данных.
- Math.LOG2E: логарифм числа Эйлера по основанию 2. Используется при переводе логарифмов из основания E в основание 2.
- Math.LOG10E: логарифм числа Эйлера по основанию 10, применяется в аналогичных контекстах, что и
Math.LOG2E, но для логарифмов по основанию 10. - Math.SQRT1_2: представляет квадратный корень из 1/2, часто используется в геометрических вычислениях.
- Math.SQRT2: квадратный корень из 2 — константа, часто встречающаяся в алгебре, геометрии и технических расчётах.
Практическое применение математических констант
Понимание и использование этих констант может значительно расширить функциональность ваших JavaScript-приложений. Например, в разработке игр Math.PI незаменим для расчёта траекторий и поворотов. В финансовых технологиях Math.E и связанные с ним логарифмические константы критически важны для вычисления сложных процентов и графиков амортизации.
Заключение
Объект Math предоставляет инструменты для округления, возведения в степень, извлечения корней, генерации случайных чисел, тригонометрии и набор полезных констант — без необходимости что-либо импортировать. Главное, что нужно помнить: Math статичен (без new), Math.round() при равноудалённости округляет в сторону +Infinity, Math.trunc() — предсказуемый способ отбросить дробную часть, для получения целого числа в диапазоне нужно масштабировать Math.random(), а при некорректных входных данных возвращается NaN, а не ошибка.
Связанные темы
- JavaScript Numbers — числовые литералы, точность и преобразование
- JavaScript Operators — арифметика, включая оператор возведения в степень
** - JavaScript Functions — оборачивайте переиспользуемые вычисления, как в примере с
randomIntвыше - Comparison Operators — используйте совместно с
Math.max/Math.minдля проверки границ