首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Math

Math 是一个内置对象, 它具有数学常数和函数的属性和方法。不是一个函数对象。

描述

与其它全局对象不同的是, Math 不是一个构造器.  Math 的所有属性和方法都是静态的. 你用到的常数pi可以用 Math.PI 表示,用 x 作参数 Math.sin(x)调用sin函数. JavaScript中的常数, 是以全精度的实数定义的.

属性

Math.E欧拉常数,也是自然对数的底数, 约等于 2.718.Math.LN22的自然对数, 约等于0.693.Math.LN1010的自然对数, 约等于 2.303.Math.LOG2E以2为底E的对数, 约等于 1.443.Math.LOG10E以10为底E的对数, 约等于 0.434.Math.PI圆周率,一个圆的周长和直径之比,约等于 3.14159.Math.SQRT1_21/2的平方根, 约等于 0.707.Math.SQRT22的平方根,约等于 1.414.

方法

需要注意的是三角函数(sin()cos()tan(),asin()acos()atan()atan2())是以弧度返回值的。可以通过除法(Math.PI / 180)把弧度转换为角度,也可以通过其他方法来转换。

需要注意的是很多数学函数都有一个精度,并且精度在不同环境下也是不相同的。这就意味着不同的浏览器会给出不同的结果,甚至相同的 JS 引擎在不同的OS或者架构下也会给出不同的结果。

Math.abs(x)返回x的绝对值.

Math.acos(x)返回x的反余弦值.

Math.acosh(x)返回x的反双曲余弦值.

Math.asin(x)返回x的反正弦值.

Math.asinh(x)返回x的反双曲正弦值.

Math.atan(x)以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值.

Math.atanh(x)返回 x 的反双曲正切值.

Math.atan2(y, x)返回 y/x 的反正切值.

Math.cbrt(x)返回x的立方根.

Math.ceil(x)返回x向上取整后的值.

Math.clz32(x)返回一个32位整数的前导零的数量。

Math.cos(x)返回x的余弦值.

Math.cosh(x)返回x的双曲余弦值.

Math.exp(x)返回 Ex, 当x为参数,  E 是欧拉常数 (2.718...), 自然对数的底.

Math.expm1(x)返回 exp(x)-1 的值.

Math.floor(x)返回小于x的最大整数。

Math.fround(x)返回数字的最接近的单精度浮点型表示。

Math.hypot([x[,y[,…]]])返回其参数平方和的平方根。

Math.imul(x)返回32位整数乘法的结果。

Math.log(x)返回一个数的自然对数(loge,即ln)。

Math.log1p(x)返回 1 加上一个数字的的自然对数(loge,即ln)。

Math.log10(x)返回以10为底数的x的对数。

Math.log2(x)返回以2为底数的x的对数。

Math.max([x[,y[,…]]])返回0个到多个数值中最大值.

Math.min([x[,y[,…]]])返回0个到多个数值中最小值.

Math.pow(x,y)返回x的y次幂.

Math.random()返回0到1之间的伪随机数.

Math.round(x)返回四舍五入后的整数.

Math.sign(x)返回x的符号函数, 判定x是正数,负数还是0.

Math.sin(x)返回正弦值.

Math.sinh(x)返回x的双曲正弦值.

Math.sqrt(x)返回x的平方根.

Math.tan(x)返回x的正切值.

Math.tanh(x)返回x的双曲正切值.Math.toSource()返回字符串 "Math".

Math.trunc(x)返回x的整数部分,去除小数.

扩展Math对象

由于JavaScript中的大多数内置Math对象都可以使用自定义属性和方法进行扩展。为了扩展Math对象,你不要使用“原型”而是直接扩展Math

代码语言:javascript
复制
Math.propName = propValue;
Math.methodName = methodRef;

例如,下面的示例向Math对象添加一个方法来计算参数列表的最大公约数

代码语言:javascript
复制
/* Variadic function -- Returns the greatest common divisor of a list of arguments */
Math.gcd = function () {
  var d = Math.min.apply(Math, arguments);
  for (let n = arguments.length, i = 0; d > 1 && n > i; arguments[i] % d === 0 ? i++ : (d--, i = 0));
  return d;
}

尝试一下:

代码语言:javascript
复制
console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`

规范

Specification

Status

Comment

ECMAScript 1st Edition (ECMA-262)

Standard

Initial definition. Implemented in 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

New methods log10(), log2(), log1p(), expm1(), cosh(), sinh(), tanh(), acosh(), asinh(), atanh(), hypot(), trunc(), sign(), imul(), fround(), cbrt() and clz32() added.

ECMAScript Latest Draft (ECMA-262)The definition of 'Math' in that specification.

Living Standard

浏览器兼容性

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

E

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LN2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LN10

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LOG2E

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LOG10E

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

PI

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

SQRT1_2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

SQRT2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

abs

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

acos

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

acosh

38

(Yes)

25

No

25

7.1

asin

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

asinh

38

(Yes)

25

No

25

7.1

atan

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

atan2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

atanh

38

(Yes)

25

No

25

7.1

cbrt

38

(Yes)

25

No

25

7.1

ceil

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

clz32

38

(Yes)

31

No

25

(Yes)

cos

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

cosh

38

(Yes)

25

No

25

7.1

exp

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

expm1

38

(Yes)

25

No

25

7.1

floor

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

fround

38

(Yes)

26

No

25

7.1

hypot

38

(Yes)

27

No

25

7.1

imul

28

(Yes)

20

No

16

7

log

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

log1p

38

(Yes)

25

No

25

7.1

log2

38

(Yes)

25

No

25

7.1

log10

38

(Yes)

25

No

25

7.1

max

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

min

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

pow

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

random

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

round

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

sign

38

(Yes)

25

No

25

9

sin

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

sinh

38

(Yes)

25

No

25

7.1

sqrt

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

tan

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

tanh

38

(Yes)

25

No

25

7.1

trunc

38

(Yes)

25

No

25

7.1

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

E

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LN2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LN10

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LOG2E

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

LOG10E

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

PI

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

SQRT1_2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

SQRT2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

abs

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

acos

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

acosh

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

asin

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

asinh

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

atan

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

atan2

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

atanh

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

cbrt

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

ceil

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

clz32

(Yes)

(Yes)

(Yes)

31

No

(Yes)

(Yes)

cos

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

cosh

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

exp

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

expm1

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

floor

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

fround

(Yes)

(Yes)

(Yes)

26

No

(Yes)

8

hypot

(Yes)

(Yes)

(Yes)

27

No

(Yes)

8

imul

(Yes)

(Yes)

(Yes)

20

No

(Yes)

7

log

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

log1p

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

log2

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

log10

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

max

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

min

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

pow

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

random

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

round

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

sign

(Yes)

(Yes)

(Yes)

25

No

(Yes)

(Yes)

sin

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

sinh

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

sqrt

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

tan

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

tanh

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

trunc

(Yes)

(Yes)

(Yes)

25

No

(Yes)

8

扫码关注腾讯云开发者

领取腾讯云代金券