aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/math/index.html
blob: e17acb9e1aec9b8618f099e23ee5b7d669a4bb90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
---
title: Math
slug: Web/JavaScript/Reference/Global_Objects/Math
tags:
  - JavaScript
  - Math
  - Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Math
---
<div>{{JSRef("Global_Objects", "Math")}}</div>

<p>Объект <strong><code>Math</code></strong> является встроенным объектом, хранящим в своих свойствах и методах различные математические константы и функции. Объект <code>Math</code> не является функциональным объектом.</p>

<p><code>Math</code> не работает с числами типа {{jsxref("BigInt")}}.</p>

<h2 id="Description" name="Description">Описание</h2>

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

<h2 id="Properties" name="Properties">Свойства</h2>

<dl>
 <dt>{{jsxref("Math.E")}}</dt>
 <dd>Число Эйлера или Непера, основание натуральных логарифмов, приблизительно равное 2,718.</dd>
 <dt>{{jsxref("Math.LN2")}}</dt>
 <dd>Натуральный логарифм из 2, приблизительно равен 0,693.</dd>
 <dt>{{jsxref("Math.LN10")}}</dt>
 <dd>Натуральный логарифм из 10, приблизительно равен 2,303.</dd>
 <dt>{{jsxref("Math.LOG2E")}}</dt>
 <dd>Двоичный логарифм из E, приблизительно равен 1,443.</dd>
 <dt>{{jsxref("Math.LOG10E")}}</dt>
 <dd>Десятичный логарифм из E, приблизительно равен 0,434.</dd>
 <dt>{{jsxref("Math.PI")}}</dt>
 <dd>Отношение длины окружности круга к его диаметру, приблизительно равно 3,14159.</dd>
 <dt>{{jsxref("Math.SQRT1_2")}}</dt>
 <dd>Квадратный корень из 1/2; или, что тоже самое, 1, делённая на квадратный корень из 2, приблизительно равен 0,707.</dd>
 <dt>{{jsxref("Math.SQRT2")}}</dt>
 <dd>Квадратный корень из 2, приблизительно равен 1,414.</dd>
</dl>

<h2 id="Methods" name="Methods">Методы</h2>

<div class="note">
<p>Обратите внимание, что тригонометрические функции (<code>sin()</code>, <code>cos()</code>, <code>tan()</code>, <code>asin()</code>, <code>acos()</code>, <code>atan()</code> и <code>atan2()</code>) принимают в параметрах или возвращают углы в радианах. Для преобразования радианов в градусы, поделите их на величину <code>(Math.PI / 180)</code>; для преобразования в обратном направлении, умножьте градусы на эту же величину.</p>
</div>

<div class="note">
<p>Обратите внимание, что точность большинства математических функций зависит от реализации. Это означает, что различные браузеры могут дать разные результаты, более того, даже один и тот же движок JavaScript на различных операционных системах или архитектурах может выдать разные результаты.</p>
</div>

<dl>
 <dt>{{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}</dt>
 <dd>Возвращает абсолютное значение числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}</dt>
 <dd>Возвращает арккосинус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает гиперболический арккосинус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}</dt>
 <dd>Возвращает арксинус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает гиперболический арксинус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}</dt>
 <dd>Возвращает арктангенс числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает гиперболический арктангенс числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/atan2", "Math.atan2(y, x)")}}</dt>
 <dd>Возвращает арктангенс от частного своих аргументов.</dd>
 <dt>{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает кубический корень числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}</dt>
 <dd>Возвращает значение числа, округлённое к большему целому.</dd>
 <dt>{{jsxref("Global_Objects/Math/clz32", "Math.clz32(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает количество ведущих нулей 32-битного целого числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}</dt>
 <dd>Возвращает косинус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает гиперболический косинус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}</dt>
 <dd>Возвращает E<sup>x</sup>, где <var>x</var> — аргумент, а E — число Эйлера (2,718…), основание натурального логарифма.</dd>
 <dt>{{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает <code>exp(x)</code>, из которого вычли единицу.</dd>
 <dt>{{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}</dt>
 <dd>Возвращает значение числа, округлённое к меньшему целому.</dd>
 <dt>{{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает ближайшее число с плавающей запятой <a href="https://ru.wikipedia.org/wiki/Число_одинарной_точности">одинарной точности</a>, представляющие это число.</dd>
 <dt>{{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[, y[, …]]])")}} {{experimental_inline}}</dt>
 <dd>Возвращает квадратный корень из суммы квадратов своих аргументов.</dd>
 <dt>{{jsxref("Global_Objects/Math/imul", "Math.imul(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает результат умножения 32-битных целых чисел.</dd>
 <dt>{{jsxref("Global_Objects/Math/log", "Math.log(x)")}}</dt>
 <dd>Возвращает натуральный логарифм числа (log<sub>e</sub>, также известен как ln).</dd>
 <dt>{{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает натуральный логарифм числа <code>1 + x</code> (log<sub>e</sub>, также известен как ln).</dd>
 <dt>{{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает десятичный логарифм числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает двоичный логарифм числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/max", "Math.max([x[, y[, …]]])")}}</dt>
 <dd>Возвращает наибольшее число из своих аргументов.</dd>
 <dt>{{jsxref("Global_Objects/Math/min", "Math.min([x[, y[, …]]])")}}</dt>
 <dd>Возвращает наименьшее число из своих аргументов.</dd>
 <dt>{{jsxref("Global_Objects/Math/pow", "Math.pow(x, y)")}}</dt>
 <dd>Возвращает основание в степени экспоненты, то есть, значение выражения <code>основание<sup>экспонента</sup></code>.</dd>
 <dt>{{jsxref("Global_Objects/Math/random", "Math.random()")}}</dt>
 <dd>Возвращает псевдослучайное число в диапазоне от 0 до 1.</dd>
 <dt>{{jsxref("Global_Objects/Math/round", "Math.round(x)")}}</dt>
 <dd>Возвращает значение числа, округлённое до ближайшего целого.</dd>
 <dt>{{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает знак числа, указывающий, является ли число положительным, отрицательным или нулём.</dd>
 <dt>{{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}</dt>
 <dd>Возвращает синус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает гиперболический синус числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}</dt>
 <dd>Возвращает положительный квадратный корень числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}</dt>
 <dd>Возвращает тангенс числа.</dd>
 <dt>{{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает гиперболический тангенс числа.</dd>
 <dt><code>Math.toSource()</code> {{non-standard_inline}}</dt>
 <dd>Возвращает строку <code>"Math"</code>.</dd>
 <dt>{{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}} {{experimental_inline}}</dt>
 <dd>Возвращает целую часть числа, убирая дробные цифры.</dd>
</dl>

<h2 id="Расширение_объекта_Math">Расширение объекта <code>Math</code></h2>

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

<pre><code>Math.propName = propValue;
Math.methodName = methodRef;</code></pre>

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

<pre><code>/* Вариативная функция -- Возвращает наибольший общий делитель списка аргументов */
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 &gt; 2) {
        var result = Math.gcd(arguments[0], arguments[1]);
        for (var i = 2; i &lt; arguments.length; i++)
            result = Math.gcd(result, arguments[i]);
        return result;
    }
};</code></pre>

<p>Попробуйте:</p>

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

<h2 id="Specifications" name="Specifications">Спецификации</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Спецификация</th>
   <th scope="col">Статус</th>
   <th scope="col">Комментарии</th>
  </tr>
  <tr>
   <td>ECMAScript 1-е издание.</td>
   <td>Стандарт</td>
   <td>Изначальное определение. Реализована в JavaScript 1.1.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.8', 'Math')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-math-object', 'Math')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>Добавлены новые методы: {{jsxref("Math.log10()", "log10()")}}, {{jsxref("Math.log2()", "log2()")}}, {{jsxref("Math.log1p()", "log1p()")}}, {{jsxref("Math.expm1()", "expm1()")}}, {{jsxref("Math.cosh()", "cosh()")}}, {{jsxref("Math.sinh()", "sinh()")}}, {{jsxref("Math.tanh()", "tanh()")}}, {{jsxref("Math.acosh()", "acosh()")}}, {{jsxref("Math.asinh()", "asinh()")}}, {{jsxref("Math.atanh()", "atanh()")}}, {{jsxref("Math.hypot()", "hypot()")}}, {{jsxref("Math.trunc()", "trunc()")}}, {{jsxref("Math.sign()", "sign()")}}, {{jsxref("Math.imul()", "imul()")}}, {{jsxref("Math.fround()", "fround()")}}, {{jsxref("Math.cbrt()", "cbrt()")}} и {{jsxref("Math.clz32()", "clz32()")}}.</td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-math-object', 'Math')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2>

<p>{{Compat("javascript.builtins.Math")}}</p>

<h2 id="See_also" name="See_also">Смотрите также</h2>

<ul>
 <li>{{jsxref("Global_Objects/Number", "Number")}}</li>
</ul>