---
title: Math
slug: Web/JavaScript/Reference/Global_Objects/Math
tags:
- JavaScript
- Math
- 参考
- 数学
- 计算
translation_of: Web/JavaScript/Reference/Global_Objects/Math
---
{{JSRef}}
Math
是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math
不是一个函数对象。
Math
用于 {{jsxref("Number")}} 类型。它不支持 {{jsxref("BigInt")}}。
描述
与其他全局对象不同的是,Math
不是一个构造器。Math
的所有属性与方法都是静态的。引用圆周率的写法是 Math.PI
,调用正余弦函数的写法是 Math.sin(x)
,x
是要传入的参数。Math
的常量是使用 JavaScript 中的全精度浮点数来定义的。
属性
- {{jsxref("Math.E")}}
- 欧拉常数,也是自然对数的底数,约等于
2.718
。
- {{jsxref("Math.LN2")}}
2
的自然对数,约等于 0.693
。
- {{jsxref("Math.LN10")}}
10
的自然对数,约等于 2.303
。
- {{jsxref("Math.LOG2E")}}
- 以
2
为底的 E
的对数,约等于 1.443
。
- {{jsxref("Math.LOG10E")}}
- 以
10
为底的 E
的对数,约等于 0.434
。
- {{jsxref("Math.PI")}}
- 圆周率,一个圆的周长和直径之比,约等于
3.14159
。
- {{jsxref("Math.SQRT1_2")}}
- 二分之一 ½ 的平方根,同时也是
2
的平方根的倒数 ,约等于 0.707
。
- {{jsxref("Math.SQRT2")}}
2
的平方根,约等于 1.414
。
方法
需要注意的是,三角函数 sin()
、cos()
、tan()
、asin()
、acos()
、atan()
和 atan2()
返回的值是弧度而非角度。
若要转换,弧度除以 (Math.PI / 180)
即可转换为角度,同理,角度乘以这个数则能转换为弧度。
需要注意的是,很多 Math
函数都有一个精度,而且这个精度在不同实现中也是不相同的。这意味着不同的浏览器会给出不同的结果,甚至,在不同的系统或架构下,相同的 JS 引擎也会给出不同的结果!
- {{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}
- 返回一个数的绝对值。
- {{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}
- 返回一个数的反余弦值。
- {{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}}
- 返回一个数的反双曲余弦值。
- {{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}
- 返回一个数的反正弦值。
- {{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}}
- 返回一个数的反双曲正弦值。
- {{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}
- 返回一个数的反正切值。
- {{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}}
- 返回一个数的反双曲正切值。
- {{jsxref("Global_Objects/Math/atan2", "Math.atan2(y, x)")}}
- 返回
y/x
的反正切值。
- {{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}}
- 返回一个数的立方根。
- {{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}
- 返回大于一个数的最小整数,即一个数向上取整后的值。
- {{jsxref("Global_Objects/Math/clz32", "Math.clz32(x)")}}
- 返回一个 32 位整数的前导零的数量。
- {{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}
- 返回一个数的余弦值。
- {{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}}
- 返回一个数的双曲余弦值。
- {{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}
- 返回欧拉常数的参数次方,
Ex
,其中 x
为参数,E
是欧拉常数(2.718...,自然对数的底数)。
- {{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}}
- 返回
exp(x) - 1
的值。
- {{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}
- 返回小于一个数的最大整数,即一个数向下取整后的值。
- {{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}}
- 返回最接近一个数的单精度浮点型表示。
- {{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[, y[, …]]])")}}
- 返回其所有参数平方和的平方根。
- {{jsxref("Global_Objects/Math/imul", "Math.imul(x, y)")}}
- 返回 32 位整数乘法的结果。
- {{jsxref("Global_Objects/Math/log", "Math.log(x)")}}
- 返回一个数的自然对数(㏒e,即 ㏑)。
- {{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}}
- 返回一个数加 1 的和的自然对数(㏒e,即 ㏑)。
- {{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}}
- 返回一个数以 10 为底数的对数。
- {{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}}
- 返回一个数以 2 为底数的对数。
- {{jsxref("Global_Objects/Math/max", "Math.max([x[, y[, …]]])")}}
- 返回零到多个数值中最大值。
- {{jsxref("Global_Objects/Math/min", "Math.min([x[, y[, …]]])")}}
- 返回零到多个数值中最小值。
- {{jsxref("Global_Objects/Math/pow", "Math.pow(x, y)")}}
- 返回一个数的 y 次幂。
- {{jsxref("Global_Objects/Math/random", "Math.random()")}}
- 返回一个 0 到 1 之间的伪随机数。
- {{jsxref("Global_Objects/Math/round", "Math.round(x)")}}
- 返回四舍五入后的整数。
- {{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}}
- 返回一个数的符号,得知一个数是正数、负数还是 0。
- {{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}
- 返回一个数的正弦值。
- {{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}}
- 返回一个数的双曲正弦值。
- {{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}
- 返回一个数的平方根。
- {{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}
- 返回一个数的正切值。
- {{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}}
- 返回一个数的双曲正切值。
Math.toSource()
- 返回字符串
"Math"
。
- {{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}}
- 返回一个数的整数部分,直接去除其小数点及之后的部分。
拓展 Math
对象
As with most of the built-in objects in JavaScript, the Math
object can be extended with custom properties and methods. To extend the Math
object, you do not use prototype
. Instead, you directly extend Math
:
Math.propName = propValue;
Math.methodName = methodRef;
For instance, the following example adds a method to the Math
object for calculating the greatest common divisor of a list of arguments.
/* 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;
}
};
试试运行下面的代码:
console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`
规范
规范 |
{{SpecName('ESDraft', '#sec-math-object', 'Math')}} |
浏览器兼容性
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.builtins.Math")}}
参见