Math - це вбудований об'єкт із полями і методами для реалізації математичних сталих та функцій. Не являється функцією.

Опис

На відміну від інших глобальних об'єктів, 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
Логарифм від ee за основою 2, приблизно дорівнює 1.443.
Math.LOG10E
Логарифм від e e за основою 10, приблизно дорівнює 0.434.
Math.PI
Значення відношення довжини кола до його діаметру, наближено дорівнює 3.14159.
Math.SQRT1_2
Квадратний корінь від 1/21/2; еквівалентно 12\frac {1}{\sqrt{2}}. Наближено дорівнює 0.707.
Math.SQRT2
Значення квадратного кореня від 2, наближено 1.414.

Методи

Варто зазначити, що тригонометричні функції (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) очікують або повертають значення у радіанах. Для конвертації достатньо пам'ятати, що 1 кутовий градус - це (Math.PI / 180) радіан.

Слід мати на увазі, що точність багатьох математичних функцій залежить від конкретної реалізації платформи. Тобто одна і та ж функція у різних браузерах може дати дещо різний результат. Навіть більше - один і той самий JS-рушій на різних ОС чи архітектурах також може дати різні результати.

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)
Повертає результат обчислення exe^x, де xx - це аргумент функції, а ee - стала Ейлера (2.718…), основа натурального логарифму.
Math.expm1(x)
Повертає різницю exp(x) і 1 (тобто значення виразу ex-1e^x - 1).
Math.floor(x)
Повертає результат округлення "до меншого".
Math.fround(x)
Повертає найближче число із рухомою комою (крапкою) одинарної точності від аргументу.
Math.hypot([x[, y[, …]]])
Повертає квадратний корінь від суми квадратів аргументів.
Math.imul(x, y)
Повертає результат 32-бітного цілочисельного множення аргументів.
Math.log(x)
Повертає натуральний логарифм (loge, або ln) числа.
Math.log1p(x)
Повертає натуральний логарифм від 1 + x для аргументу xx.
Math.log10(x)
Повертає логарифм за основою 10 від аргументу.
Math.log2(x)
Повертає логарифм за основою 2 від аргументу.
Math.max([x[, y[, …]]])
Повертає найбільше із нуля чи більше аргументів.
Math.min([x[, y[, …]]])
Повертає найменше із нуля чи більше аргументів.
Math.pow(x, y)
Повертає результат піднесення до степеня xy.
Math.random()
Повертає псевдовипадкове число з-поміж 0 і 1.
Math.round(x)
Повертає значення аргументу, округлене до найближчого цілого.
Math.sign(x)
Повертає знак поданого числа. Визначає, чи являється аргумент додатним числом, від'ємним, чи дорівнює 0.
Math.sin(x)
Повертає значення синуса аргументу.
Math.sinh(x)
Повертає значення гіперболічного синуса аргументу.
Math.sqrt(x)
Повертає додатне значення квадратного кореня від аргументу.
Math.tan(x)
Повертає значення тангенса аргументу.
Math.tanh(x)
Повертає значення гіперболічного тангенса аргументу.
Math.toSource()
Повертає строку "Math".
Math.trunc(x)
Повертає цілу частину аргументу, відкидаючи всю дробову частину.

Розширення об'єкту Math

Як і переважна більшість вбудованих об'єктів у JavaScript, об'єкт Math можна розширити додатковими полями та методами. Для цього не потрібно використовувати prototype - натомість, слід напряму розширювати Math:

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

Зокрема, наступний приклад додає до об'єкта Math метод для знаходження найбільшого спільного дільника для переліку аргументів.

/* Варіативна функція -- Повертає найбільший спільний дільник від переліку аргументів */
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;
    }
};

 

Спробуємо його:

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

 

Специфікації

Специфікація Статус документу Примітка
ECMAScript 1st Edition (ECMA-262) Standard Первинне визначення. Реалізовано у JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
The definition of 'Math' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math' in that specification.
Standard Додано нові методи log10(), log2(), log1p(), expm1(), cosh(), sinh(), tanh(), acosh(), asinh(), atanh(), hypot(), trunc(), sign(), imul(), fround(), cbrt() та clz32().
ECMAScript Latest Draft (ECMA-262)
The definition of 'Math' in that specification.
Draft  

Підтримка у браузерах

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
E Yes Yes1 Yes Yes Yes
LN2 Yes Yes1 Yes Yes Yes
LN10 Yes Yes1 Yes Yes Yes
LOG2E Yes Yes1 Yes Yes Yes
LOG10E Yes Yes1 Yes Yes Yes
PI Yes Yes1 Yes Yes Yes
SQRT1_2 Yes Yes1 Yes Yes Yes
SQRT2 Yes Yes1 Yes Yes Yes
abs Yes Yes1 Yes Yes Yes
acos Yes Yes1 Yes Yes Yes
acosh38 Yes25 No258
asin Yes Yes1 Yes Yes Yes
asinh38 Yes25 No258
atan Yes Yes1 Yes Yes Yes
atan2 Yes Yes1 Yes Yes Yes
atanh38 Yes25 No258
cbrt38 Yes25 No258
ceil Yes Yes1 Yes Yes Yes
clz3238 Yes31 No25 Yes
cos Yes Yes1 Yes Yes Yes
cosh38 Yes25 No258
exp Yes Yes1 Yes Yes Yes
expm138 Yes25 No258
floor Yes Yes1 Yes Yes Yes
fround38 Yes26 No258
hypot38 Yes27 No258
imul28 Yes20 No167
log Yes Yes1 Yes Yes Yes
log1p38 Yes25 No258
log238 Yes25 No258
log1038 Yes25 No258
max Yes Yes1 Yes Yes Yes
min Yes Yes1 Yes Yes Yes
pow Yes Yes1 Yes Yes Yes
random Yes Yes1 Yes Yes Yes
round Yes Yes1 Yes Yes Yes
sign38 Yes25 No259
sin Yes Yes1 Yes Yes Yes
sinh38 Yes25 No258
sqrt Yes Yes1 Yes Yes Yes
tan Yes Yes1 Yes Yes Yes
tanh38 Yes25 No258
trunc38 Yes25 No258
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
E Yes Yes Yes4 Yes Yes Yes
LN2 Yes Yes Yes4 Yes Yes Yes
LN10 Yes Yes Yes4 Yes Yes Yes
LOG2E Yes Yes Yes4 Yes Yes Yes
LOG10E Yes Yes Yes4 Yes Yes Yes
PI Yes Yes Yes4 Yes Yes Yes
SQRT1_2 Yes Yes Yes4 Yes Yes Yes
SQRT2 Yes Yes Yes4 Yes Yes Yes
abs Yes Yes Yes4 Yes Yes Yes
acos Yes Yes Yes4 Yes Yes Yes
acosh Yes Yes Yes25 Yes8 Yes
asin Yes Yes Yes4 Yes Yes Yes
asinh Yes Yes Yes25 Yes8 Yes
atan Yes Yes Yes4 Yes Yes Yes
atan2 Yes Yes Yes4 Yes Yes Yes
atanh Yes Yes Yes25 Yes8 Yes
cbrt Yes Yes Yes25 Yes8 Yes
ceil Yes Yes Yes4 Yes Yes Yes
clz32 Yes Yes Yes31 Yes Yes Yes
cos Yes Yes Yes4 Yes Yes Yes
cosh Yes Yes Yes25 Yes8 Yes
exp Yes Yes Yes4 Yes Yes Yes
expm1 Yes Yes Yes25 Yes8 Yes
floor Yes Yes Yes4 Yes Yes Yes
fround Yes Yes Yes26 Yes8 Yes
hypot Yes Yes Yes27 Yes8 Yes
imul Yes Yes Yes20 Yes7 Yes
log Yes Yes Yes4 Yes Yes Yes
log1p Yes Yes Yes25 Yes8 Yes
log2 Yes Yes Yes25 Yes8 Yes
log10 Yes Yes Yes25 Yes8 Yes
max Yes Yes Yes4 Yes Yes Yes
min Yes Yes Yes4 Yes Yes Yes
pow Yes Yes Yes4 Yes Yes Yes
random Yes Yes Yes4 Yes Yes Yes
round Yes Yes Yes4 Yes Yes Yes
sign Yes Yes Yes25 Yes Yes Yes
sin Yes Yes Yes4 Yes Yes Yes
sinh Yes Yes Yes25 Yes8 Yes
sqrt Yes Yes Yes4 Yes Yes Yes
tan Yes Yes Yes4 Yes Yes Yes
tanh Yes Yes Yes25 Yes8 Yes
trunc Yes Yes Yes25 Yes8 Yes

Дивіться також

Мітки документа й учасники

Зробили внесок у цю сторінку: AdriandeCita, fscholz
Востаннє оновлена: AdriandeCita,