diff options
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.html | 187 |
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 > 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; + } +};</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> |