Math
====

Объект **`Math`** является встроенным объектом, хранящим в своих свойствах и методах различные математические константы и функции. Объект `Math` не является функциональным объектом.

`Math` не работает с числами типа `BigInt`.

Описание
--------

В отличие от других глобальных объектов, объект `Math` не является конструктором. Все свойства и методы объекта `Math` являются статическими. Вы ссылаетесь на константу π через `Math.PI` и вызываете функцию синуса через `Math.sin(x)`, где `x` является аргументом метода. Константы в JavaScript определены с полной точностью действительных чисел.

Свойства
--------

`Math.E`

Число Эйлера или Непера, основание натуральных логарифмов, приблизительно равное 2,718.

`Math.LN2`

Натуральный логарифм из 2, приблизительно равен 0,693.

`Math.LN10`

Натуральный логарифм из 10, приблизительно равен 2,303.

`Math.LOG2E`

Двоичный логарифм из E, приблизительно равен 1,443.

`Math.LOG10E`

Десятичный логарифм из E, приблизительно равен 0,434.

`Math.PI`

Отношение длины окружности круга к его диаметру, приблизительно равно 3,14159.

`Math.SQRT1_2`

Квадратный корень из 1/2; или, что тоже самое, 1, делённая на квадратный корень из 2, приблизительно равен 0,707.

`Math.SQRT2`

Квадратный корень из 2, приблизительно равен 1,414.

Методы
------

**Примечание:** Обратите внимание, что тригонометрические функции (`sin()`, `cos()`, `tan()`, `asin()`, `acos()`, `atan()` и `atan2()`) принимают в параметрах или возвращают углы в радианах. Для преобразования радианов в градусы, поделите их на величину `(Math.PI / 180)`; для преобразования в обратном направлении, умножьте градусы на эту же величину.

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

`Math.abs(x)`

Возвращает абсолютное значение числа.

`Math.acos(x)`

Возвращает арккосинус числа.

`Math.acosh(x)` 
Экспериментальная возможность

Возвращает гиперболический арккосинус числа.

`Math.asin(x)`

Возвращает арксинус числа.

`Math.asinh(x)` 
Экспериментальная возможность

Возвращает гиперболический арксинус числа.

`Math.atan(x)`

Возвращает арктангенс числа.

`Math.atanh(x)` 
Экспериментальная возможность

Возвращает гиперболический арктангенс числа.

`Math.atan2(y, x)`

Возвращает арктангенс от частного своих аргументов.

`Math.cbrt(x)` 
Экспериментальная возможность

Возвращает кубический корень числа.

`Math.ceil(x)`

Возвращает значение числа, округлённое к большему целому.

`Math.clz32(x)` 
Экспериментальная возможность

Возвращает количество ведущих нулей 32-битного целого числа.

`Math.cos(x)`

Возвращает косинус числа.

`Math.cosh(x)` 
Экспериментальная возможность

Возвращает гиперболический косинус числа.

`Math.exp(x)`

Возвращает Ex, где *x* — аргумент, а E — число Эйлера (2,718…), основание натурального логарифма.

`Math.expm1(x)` 
Экспериментальная возможность

Возвращает `exp(x)`, из которого вычли единицу.

`Math.floor(x)`

Возвращает значение числа, округлённое к меньшему целому.

`Math.fround(x)` 
Экспериментальная возможность

Возвращает ближайшее число с плавающей запятой одинарной точности, представляющие это число.

`Math.hypot([x[, y[, …]]])` 
Экспериментальная возможность

Возвращает квадратный корень из суммы квадратов своих аргументов.

`Math.imul(x)` 
Экспериментальная возможность

Возвращает результат умножения 32-битных целых чисел.

`Math.log(x)`

Возвращает натуральный логарифм числа (loge, также известен как ln).

`Math.log1p(x)` 
Экспериментальная возможность

Возвращает натуральный логарифм числа `1 + x` (loge, также известен как ln).

`Math.log10(x)` 
Экспериментальная возможность

Возвращает десятичный логарифм числа.

`Math.log2(x)` 
Экспериментальная возможность

Возвращает двоичный логарифм числа.

`Math.max([x[, y[, …]]])`

Возвращает наибольшее число из своих аргументов.

`Math.min([x[, y[, …]]])`

Возвращает наименьшее число из своих аргументов.

`Math.pow(a, n)`

Возвращает `a` в `n`-й степени, то есть *a**n*.

`Math.random()`

Возвращает псевдослучайное число в диапазоне от 0 до 1.

`Math.round(x)`

Возвращает значение числа, округлённое до ближайшего целого.

`Math.sign(x)` 
Экспериментальная возможность

Возвращает знак числа, указывающий, является ли число положительным, отрицательным или нулём.

`Math.sin(x)`

Возвращает синус числа.

`Math.sinh(x)` 
Экспериментальная возможность

Возвращает гиперболический синус числа.

`Math.sqrt(x)`

Возвращает положительный квадратный корень числа.

`Math.tan(x)`

Возвращает тангенс числа.

`Math.tanh(x)` 
Экспериментальная возможность

Возвращает гиперболический тангенс числа.

`Math.toSource()` 
Non-standard

Возвращает строку `"Math"`.

`Math.trunc(x)` 
Экспериментальная возможность

Возвращает целую часть числа, убирая дробные цифры.

Расширение объекта `Math`
-------------------------

Как и большинство встроенных объектов в Javascript, объект `Math` может быть расширен пользовательскими способами и методами. Чтобы расширить объект `Math`, не используют `prototype`. Вместо этого, расширяют `Math` напрямую:


```js
Math.propName = propValue;
Math.methodName = methodRef;
```


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


```js
/\* Вариативная функция -- Возвращает наибольший общий делитель списка аргументов \*/
Math.gcd = function () {
  if (arguments.length == 2) {
    if (arguments[1] == 0) return arguments[0];
    else return Math.gcd(arguments[1], arguments[0] % arguments[1]);
  } else if (arguments.length > 2) {
    var result = Math.gcd(arguments[0], arguments[1]);
    for (var i = 2; i < arguments.length; i++)
      result = Math.gcd(result, arguments[i]);
    return result;
  }
};
```


Попробуйте:


```js
console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-math-object |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Number`