aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/global_objects/math/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-cn/web/javascript/reference/global_objects/math/index.html')
-rw-r--r--files/zh-cn/web/javascript/reference/global_objects/math/index.html187
1 files changed, 187 insertions, 0 deletions
diff --git a/files/zh-cn/web/javascript/reference/global_objects/math/index.html b/files/zh-cn/web/javascript/reference/global_objects/math/index.html
new file mode 100644
index 0000000000..924ac82fc4
--- /dev/null
+++ b/files/zh-cn/web/javascript/reference/global_objects/math/index.html
@@ -0,0 +1,187 @@
+---
+title: Math
+slug: Web/JavaScript/Reference/Global_Objects/Math
+tags:
+ - JavaScript
+ - Math
+ - 参考
+ - 数学
+ - 计算
+translation_of: Web/JavaScript/Reference/Global_Objects/Math
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math</code></strong> 是一个内置对象,它拥有一些数学常数属性和数学函数方法。<code>Math</code> 不是一个函数对象。</p>
+
+<p><code>Math</code> 用于 {{jsxref("Number")}} 类型。它不支持 {{jsxref("BigInt")}}。</p>
+
+<h2 id="描述">描述</h2>
+
+<p>与其他全局对象不同的是,<code>Math</code> 不是一个构造器。<code>Math</code> 的所有属性与方法都是静态的。引用圆周率的写法是 <code>Math.PI</code>,调用正余弦函数的写法是 <code>Math.sin(x)</code>,<code>x</code> 是要传入的参数。<code>Math</code> 的常量是使用 JavaScript 中的全精度浮点数来定义的。</p>
+
+<h2 id="属性">属性</h2>
+
+<dl>
+ <dt>{{jsxref("Math.E")}}</dt>
+ <dd>欧拉常数,也是自然对数的底数,约等于 <code>2.718</code>。</dd>
+ <dt>{{jsxref("Math.LN2")}}</dt>
+ <dd><code>2</code> 的自然对数,约等于 <code>0.693</code>。</dd>
+ <dt>{{jsxref("Math.LN10")}}</dt>
+ <dd><code>10</code> 的自然对数,约等于 <code>2.303</code>。</dd>
+ <dt>{{jsxref("Math.LOG2E")}}</dt>
+ <dd>以 <code>2</code> 为底的 <code>E</code> 的对数,约等于 <code>1.443</code>。</dd>
+ <dt>{{jsxref("Math.LOG10E")}}</dt>
+ <dd>以 <code>10</code> 为底的 <code>E</code> 的对数,约等于 <code>0.434</code>。</dd>
+ <dt>{{jsxref("Math.PI")}}</dt>
+ <dd>圆周率,一个圆的周长和直径之比,约等于 <code>3.14159</code>。</dd>
+ <dt>{{jsxref("Math.SQRT1_2")}}</dt>
+ <dd>二分之一 ½ 的平方根,同时也是 <code>2</code> 的平方根的倒数 <math><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn><mrow></mrow></msqrt></mrow></mfrac></math>,约等于 <code>0.707</code>。</dd>
+ <dt>{{jsxref("Math.SQRT2")}}</dt>
+ <dd><code>2</code> 的平方根,约等于 <code>1.414</code>。</dd>
+</dl>
+
+<h2 id="方法">方法</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> 返回的值是<em>弧度</em>而非角度。</p>
+
+<p>若要转换,弧度除以 <code>(Math.PI / 180)</code> 即可转换为角度,同理,角度乘以这个数则能转换为弧度。</p>
+</div>
+
+<div class="note">
+<p>需要注意的是,很多 <code>Math</code> 函数都有一个精度,而且这个精度在不同实现中也是不相同的。这意味着不同的浏览器会给出不同的结果,甚至,在不同的系统或架构下,相同的 JS 引擎也会给出不同的结果!</p>
+</div>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Math/abs", "Math.abs(<var>x</var>)")}}</dt>
+ <dd>返回一个数的绝对值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/acos", "Math.acos(<var>x</var>)")}}</dt>
+ <dd>返回一个数的反余弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/acosh", "Math.acosh(<var>x</var>)")}}</dt>
+ <dd>返回一个数的反双曲余弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/asin", "Math.asin(<var>x</var>)")}}</dt>
+ <dd>返回一个数的反正弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/asinh", "Math.asinh(<var>x</var>)")}}</dt>
+ <dd>返回一个数的反双曲正弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/atan", "Math.atan(<var>x</var>)")}}</dt>
+ <dd>返回一个数的反正切值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/atanh", "Math.atanh(<var>x</var>)")}}</dt>
+ <dd>返回一个数的反双曲正切值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/atan2", "Math.atan2(<var>y</var>, <var>x</var>)")}}</dt>
+ <dd>返回 <code>y/x</code> 的反正切值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(<var>x</var>)")}}</dt>
+ <dd>返回一个数的立方根。</dd>
+ <dt>{{jsxref("Global_Objects/Math/ceil", "Math.ceil(<var>x</var>)")}}</dt>
+ <dd>返回大于一个数的最小整数,即一个数向上取整后的值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/clz32", "Math.clz32(<var>x</var>)")}}</dt>
+ <dd>返回一个 32 位整数的前导零的数量。</dd>
+ <dt>{{jsxref("Global_Objects/Math/cos", "Math.cos(<var>x</var>)")}}</dt>
+ <dd>返回一个数的余弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/cosh", "Math.cosh(<var>x</var>)")}}</dt>
+ <dd>返回一个数的双曲余弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/exp", "Math.exp(<var>x</var>)")}}</dt>
+ <dd>返回欧拉常数的参数次方,<code>E<var><sup>x</sup></var></code>,其中 <code><var>x</var></code> 为参数,<code>E</code> 是欧拉常数(2.718...,自然对数的底数)。</dd>
+ <dt>{{jsxref("Global_Objects/Math/expm1", "Math.expm1(<var>x</var>)")}}</dt>
+ <dd>返回 <code>exp(x) - 1</code> 的值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/floor", "Math.floor(<var>x</var>)")}}</dt>
+ <dd>返回小于一个数的最大整数,即一个数向下取整后的值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/fround", "Math.fround(<var>x</var>)")}}</dt>
+ <dd>返回最接近一个数的<a href="https://zh.wikipedia.org/wiki/%E5%96%AE%E7%B2%BE%E5%BA%A6%E6%B5%AE%E9%BB%9E%E6%95%B8">单精度浮点型</a>表示。</dd>
+ <dt>{{jsxref("Global_Objects/Math/hypot", "Math.hypot([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
+ <dd>返回其所有参数平方和的平方根。</dd>
+ <dt>{{jsxref("Global_Objects/Math/imul", "Math.imul(<var>x</var>, <var>y</var>)")}}</dt>
+ <dd>返回 32 位整数乘法的结果。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log", "Math.log(<var>x</var>)")}}</dt>
+ <dd>返回一个数的自然对数(㏒<sub>e</sub>,即 ㏑)。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log1p", "Math.log1p(<var>x</var>)")}}</dt>
+ <dd>返回一个数加 1 的和的自然对数(㏒<sub>e</sub>,即 ㏑)。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log10", "Math.log10(<var>x</var>)")}}</dt>
+ <dd>返回一个数以 10 为底数的对数。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log2", "Math.log2(<var>x</var>)")}}</dt>
+ <dd>返回一个数以 2 为底数的对数。</dd>
+ <dt>{{jsxref("Global_Objects/Math/max", "Math.max([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
+ <dd>返回零到多个数值中最大值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/min", "Math.min([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
+ <dd>返回零到多个数值中最小值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/pow", "Math.pow(<var>x</var>, <var>y</var>)")}}</dt>
+ <dd>返回一个数的 y 次幂。</dd>
+ <dt>{{jsxref("Global_Objects/Math/random", "Math.random()")}}</dt>
+ <dd>返回一个 0 到 1 之间的伪随机数。</dd>
+ <dt>{{jsxref("Global_Objects/Math/round", "Math.round(<var>x</var>)")}}</dt>
+ <dd>返回四舍五入后的整数。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sign", "Math.sign(<var>x</var>)")}}</dt>
+ <dd>返回一个数的符号,得知一个数是正数、负数还是 0。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sin", "Math.sin(<var>x</var>)")}}</dt>
+ <dd>返回一个数的正弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sinh", "Math.sinh(<var>x</var>)")}}</dt>
+ <dd>返回一个数的双曲正弦值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(<var>x</var>)")}}</dt>
+ <dd>返回一个数的平方根。</dd>
+ <dt>{{jsxref("Global_Objects/Math/tan", "Math.tan(<var>x</var>)")}}</dt>
+ <dd>返回一个数的正切值。</dd>
+ <dt>{{jsxref("Global_Objects/Math/tanh", "Math.tanh(<var>x</var>)")}}</dt>
+ <dd>返回一个数的双曲正切值。</dd>
+ <dt><code>Math.toSource()</code></dt>
+ <dd>返回字符串 <code>"Math"</code>。</dd>
+ <dt>{{jsxref("Global_Objects/Math/trunc", "Math.trunc(<var>x</var>)")}}</dt>
+ <dd>返回一个数的整数部分,直接去除其小数点及之后的部分。</dd>
+</dl>
+
+<div class="hidden">
+<div class="note">
+<p>已被移除的内容:</p>
+</div>
+
+<h2 id="拓展_Math_对象">拓展 <code>Math</code> 对象</h2>
+
+<p>As with most of the built-in objects in JavaScript, the <code>Math</code> object can be extended with custom properties and methods. To extend the <code>Math</code> object, you do not use <code>prototype</code>. Instead, you directly extend <code>Math</code>:</p>
+
+<pre>Math.propName = propValue;
+Math.methodName = methodRef;</pre>
+
+<p>For instance, the following example adds a method to the <code>Math</code> object for calculating the <em>greatest common divisor</em> of a list of arguments.</p>
+
+<pre class="brush: js">/* Variadic function -- Returns the greatest common divisor of a list of arguments */
+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;
+ }
+};</pre>
+
+<p>试试运行下面的代码:</p>
+
+<pre class="brush: js">console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`</pre>
+</div>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">规范</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math-object', 'Math')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.Math")}}</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li>{{jsxref("Number")}}</li>
+</ul>