Math
是一个内置对象,它拥有一些数学常数属性和数学函数方法,Math
用于Number
类型,其不支持BigInt
。
Math
不是一个函数对象,也就是说Math
不是一个构造器,Math
的所有属性与方法都是静态的,例如引用圆周率的写法是Math.PI
,Math
的常量是使用JavaScript
中的全精度浮点数来定义的,需要注意的是,很多Math
的函数都有一个精度,而且这个精度在不同实现中也是不相同的,这意味着不同的浏览器会给出不同的结果,甚至在不同的系统或架构下,相同的Js
引擎也会给出不同的结果,另外三角函数sin()
、cos()
、tan()
、asin()
、acos()
、atan()
和atan2()
返回的值是弧度而非角度。若要转换,弧度除以Math.PI / 180
即可转换为角度,同理角度乘以这个数则能转换为弧度。
Math.E
: 欧拉常数,也是自然对数的底数,约等于2.718
。Math.LN2
: 2
的自然对数,约等于0.693
。Math.LN10
: 10
的自然对数,约等于2.303
。Math.LOG2E
: 以2
为底的E
的对数,约等于1.443
。Math.LOG10E
: 以10
为底的E
的对数,约等于0.434
。Math.PI
: 圆周率,一个圆的周长和直径之比,约等于3.14159
。Math.SQRT1_2
: ½
的平方根,同时也是2
的平方根的倒数,约等于0.707
。Math.SQRT2
: 2
的平方根,约等于1.414
。Math.abs(x)
Math.abs(x)
函数返回指定数字x
的绝对值。
Math.acos(x)
Math.acos()
返回一个数的反余弦值。
∀x∊[-1;1], Math.acos(x) = arccos(x) = the unique y∊[0;π] such that cos(y) = x
Math.acosh(x)
Math.acosh()
函数返回一个数的反双曲余弦值。
∀x≥1, Math.acosh(x) = arcosh(x) = the unique y≥0 such that cosh(y) = x
Math.asin(x)
Math.asin()
方法返回一个数值的反正弦。
∀x∊[-1;1], Math.asin(x) = arcsin(x) = the unique y∊[- π/2 ; π/2 ] such that sin(y) = x
Math.asinh(x)
Math.asinh()
返回一个数值的反双曲正弦值。
Math.asinh(x) = arsinh(x) = the unique y such that sinh(y) = x
Math.atan(x)
Math.atan()
函数返回一个数值的反正切。
Math.atan(x) = arctan(x) = the unique y∊[- π/2 ; π/2 ] such that tan(y) = x
Math.atanh(x)
Math.atanh()
函数返回一个数值反双曲正切值。
∀x∊(-1,1), Math.atanh(x) = arctanh(x) = the unique y such that tanh(y) = x
Math.atan2(y, x)
Math.atan2()
返回从原点(0,0)
到(x,y)
点的线段与x轴正方向之间的平面角度(弧度值),也就是Math.atan2(y,x)
。
Math.cbrt(x)
Math.cbrt()
函数返回任意数字的立方根。
Math.ceil(x)
Math.ceil()
函数返回大于或等于一个给定数字的最小整数,即向上取整。
Math.clz32(x)
Math.clz32()
函数返回一个数字在转换成32
无符号整形数字的二进制形式后,开头的0
的个数, 比如1000000
转换成32
位无符号整形数字的二进制形式后是00000000000011110100001001000000
,开头的0
的个数是12
个,则Math.clz32(1000000)
返回12
。
Math.cos(x)
Math.cos()
函数返回一个数值的余弦值。
Math.cosh(x)
Math.cosh()
函数返回数值的双曲余弦函数。
Math.exp(x)
Math.exp()
函数返回e^x
,x
表示参数,e
是自然对数的底数约2.718281828459045
。
Math.expm1(x)
Math.exp()
函数返回e^x -1
,x
表示参数,e
是自然对数的底数约2.718281828459045
。
Math.floor()
返回小于或等于一个给定数字的最大整数,即向下取整。
Math.fround(doubleFloat)
Math.fround()
可以将任意的数字转换为离它最近的单精度浮点数形式的数字。JavaScript
内部使用64
位的双浮点数字,支持很高的精度。但是有时需要用32
位浮点数字,比如从一个Float32Array
读取值时,这时会产生混乱,检查一个64
位浮点数和一个32
位浮点数是否相等会失败,即使二个数字几乎一模一样,要解决这个问题,可以使用Math.fround()
来将64
位的浮点数转换为32
位浮点数,在内部JavaScript
继续把这个数字作为64
位浮点数看待,仅仅是在尾数部分的第23
位执行了舍入到偶的操作,并将后续的尾数位设置为0
,如果数字超出32
位浮点数的范围,则返回Infinity
或-Infinity
。
Math.hypot([value1[,value2, ...]])
Math.hypot()
函数返回所有参数的平方和的平方根。本函数比Math.sqrt()
更简单也更快,只需要调用Math.hypot(v1, v2)
或Math.hypot(v1, v2, v3, v4, ...)
,其还避免了幅值过大的问题,Js
中最大的双精度浮点数是Number.MAX_VALUE = 1.797...e+308
,如果计算的数字比约1e154
大,计算其平方值会返回Infinity
,使计算的的结果出现问题。
Math.imul(a, b)
Math.imul()
函数将两个参数分别转换为32
位整数,相乘后返回32
位结果,类似C
语言的32
位整数相乘。
Math.log(x)
Math.log()
函数返回一个数的自然对数。
∀x>0, Math.log(x) = ln(x) = the unique y such that e^y = x
Math.log10(x)
Math.log10()
函数返回一个数字以10
为底的对数。
Math.log1p(x)
Math.log1p()
函数返回一个数字加1
后的自然对数, 既log(x+1)
。
Math.log2(x)
Math.log2()
函数返回一个数字以2
为底的对数。
Math.max(value1[,value2, ...])
Math.max()
函数返回一组数中的最大值。
Math.min([value1[,value2, ...]])
Math.min()
返回零个或更多个数值的最小值。
Math.pow(base, exponent)
Math.pow()
函数返回基数base
的指数exponent
次幂,即base^exponent
。
Math.random()
Math.random()
函数返回一个浮点数,伪随机数在范围从0
到小于1
,也就是说从0
(包括0
)往上,但是不包括1
,然后可以缩放到所需的范围,实现将初始种子选择到随机数生成算法,其不能被用户选择或重置。
Math.round(x)
Math.round()
函数返回一个数字四舍五入后最接近的整数。
Math.sign(x)
Math.sign()
函数返回一个数字的符号, 指示数字是正数,负数还是零。此函数共有5
种返回值, 分别是1, -1, 0, -0, NaN
代表的各是正数,负数,正零,负零,NaN
。
Math.sin(x)
Math.sin()
函数返回一个数值的正弦值。
Math.sinh(x)
Math.sinh()
函数返回一个数字的双曲正弦值。
Math.sqrt(x)
Math.sqrt()
函数返回一个数的平方根。
∀x≥0, Math.sqrt(x) = x = the unique y≥0 such that y^2 = x
Math.tan(x)
Math.tan()
方法返回一个数值的正切值。
Math.tanh(x)
Math.tanh()
函数将会返回一个数的双曲正切函数值。
Math.trunc(value)
Math.trunc()
方法会将数字的小数部分去掉,只保留整数部分。