Math
Math
是一个具有数据属性和用于处理数字的方法的对象。您可以将其视为简陋的模块:它在 JavaScript 拥有模块之前很久就被创建了。
Math.E: number
[ES1]
欧拉数,自然对数的底数,约为 2.7182818284590452354。
Math.LN10: number
[ES1]
10 的自然对数,约为 2.302585092994046。
Math.LN2: number
[ES1]
2 的自然对数,约为 0.6931471805599453。
Math.LOG10E: number
[ES1]
以 10 为底的 e 的对数,约为 0.4342944819032518。
Math.LOG2E: number
[ES1]
以 2 为底的 e 的对数,约为 1.4426950408889634。
Math.PI: number
[ES1]
数学常数 π,圆周长与其直径之比,约为 3.1415926535897932。
Math.SQRT1_2: number
[ES1]
1/2 的平方根,约为 0.7071067811865476。
Math.SQRT2: number
[ES1]
2 的平方根,约为 1.4142135623730951。
Math.cbrt(x: number): number
[ES6]
返回 x
的立方根。
> Math.cbrt(8)2
Math.exp(x: number): number
[ES1]
返回 ex
(e 为欧拉数)。Math.log()
的反函数。
> Math.exp(0)1
> Math.exp(1) === Math.Etrue
Math.expm1(x: number): number
[ES6]
返回 Math.exp(x)-1
。Math.log1p()
的反函数。非常小的数字(接近 0 的分数)以更高的精度表示。因此,每当 .exp()
返回接近 1 的值时,此函数都会返回更精确的值。
Math.log(x: number): number
[ES1]
返回 x
的自然对数(以 e 为底,欧拉数)。Math.exp()
的反函数。
> Math.log(1)0
> Math.log(Math.E)1
> Math.log(Math.E ** 2)2
Math.log1p(x: number): number
[ES6]
返回 Math.log(1 + x)
。Math.expm1()
的反函数。非常小的数字(接近 0 的分数)以更高的精度表示。因此,每当 .log()
的参数接近 1 时,您都可以为此函数提供更精确的参数。
Math.log10(x: number): number
[ES6]
返回以 10 为底的 x
的对数。10 ** x
的反函数。
> Math.log10(1)0
> Math.log10(10)1
> Math.log10(100)2
Math.log2(x: number): number
[ES6]
返回以 2 为底的 x
的对数。2 ** x
的反函数。
> Math.log2(1)0
> Math.log2(2)1
> Math.log2(4)2
Math.pow(x: number, y: number): number
[ES1]
返回 x
y
,x
的 y
次方。与 x ** y
相同。
> Math.pow(2, 3)8
> Math.pow(25, 0.5)5
Math.sqrt(x: number): number
[ES1]
返回 x
的平方根。x ** 2
的反函数。
> Math.sqrt(9)3
舍入意味着将任意数字转换为整数(没有小数部分的数字)。以下函数实现了不同的舍入方法。
Math.ceil(x: number): number
[ES1]
返回满足 x
≤ i
的最小(最接近 -∞)整数 i
。
> Math.ceil(2.1)3
> Math.ceil(2.9)3
Math.floor(x: number): number
[ES1]
返回满足 i
≤ x
的最大(最接近 +∞)整数 i
。
> Math.floor(2.1)2
> Math.floor(2.9)2
Math.round(x: number): number
[ES1]
返回最接近 x
的整数。如果 x
的小数部分为 .5
,则 .round()
向上舍入(到最接近正无穷大的整数)
> Math.round(2.4)2
> Math.round(2.5)3
Math.trunc(x: number): number
[ES6]
删除 x
的小数部分并返回结果整数。
> Math.trunc(2.1)2
> Math.trunc(2.9)2
表 12 显示了几个代表性输入的舍入函数的结果。
-2.9 |
-2.5 |
-2.1 |
2.1 |
2.5 |
2.9 |
|
---|---|---|---|---|---|---|
Math.floor |
-3 |
-3 |
-3 |
2 |
2 |
2 |
Math.ceil |
-2 |
-2 |
-2 |
3 |
3 |
3 |
Math.round |
-3 |
-2 |
-2 |
2 |
3 |
3 |
Math.trunc |
-2 |
-2 |
-2 |
2 |
2 |
2 |
所有角度均以弧度为单位指定。使用以下两个函数在度数和弧度之间进行转换。
function degreesToRadians(degrees) {
return degrees / 180 * Math.PI;
}.equal(degreesToRadians(90), Math.PI/2);
assert
function radiansToDegrees(radians) {
return radians / Math.PI * 180;
}.equal(radiansToDegrees(Math.PI), 180); assert
Math.acos(x: number): number
[ES1]
返回 x
的反余弦。
> Math.acos(0)1.5707963267948966
> Math.acos(1)0
Math.acosh(x: number): number
[ES6]
返回 x
的反双曲余弦。
Math.asin(x: number): number
[ES1]
返回 x
的反正弦。
> Math.asin(0)0
> Math.asin(1)1.5707963267948966
Math.asinh(x: number): number
[ES6]
返回 x
的反双曲正弦。
Math.atan(x: number): number
[ES1]
返回 x
的反正切。
Math.atanh(x: number): number
[ES6]
返回 x
的反双曲正切。
Math.atan2(y: number, x: number): number
[ES1]
返回商 y/x 的反正切。
Math.cos(x: number): number
[ES1]
返回 x
的余弦。
> Math.cos(0)1
> Math.cos(Math.PI)-1
Math.cosh(x: number): number
[ES6]
返回 x
的双曲余弦。
Math.hypot(...values: number[]): number
[ES6]
返回 values
的平方和的平方根(毕达哥拉斯定理)
> Math.hypot(3, 4)5
Math.sin(x: number): number
[ES1]
返回 x
的正弦。
> Math.sin(0)0
> Math.sin(Math.PI / 2)1
Math.sinh(x: number): number
[ES6]
返回 x
的双曲正弦。
Math.tan(x: number): number
[ES1]
返回 x
的正切。
> Math.tan(0)0
> Math.tan(1)1.5574077246549023
Math.tanh(x: number): number;
[ES6]
返回 x
的双曲正切。
Math.abs(x: number): number
[ES1]
返回 x
的绝对值。
> Math.abs(3)3
> Math.abs(-3)3
> Math.abs(0)0
Math.clz32(x: number): number
[ES6]
计算 32 位整数 x
中的前导零位。用于 DSP 算法。
> Math.clz32(0b01000000000000000000000000000000)1
> Math.clz32(0b00100000000000000000000000000000)2
> Math.clz32(2)30
> Math.clz32(1)31
Math.max(...values: number[]): number
[ES1]
将 values
转换为数字并返回最大值。
> Math.max(3, -5, 24)24
Math.min(...values: number[]): number
[ES1]
将 values
转换为数字并返回最小值。
> Math.min(3, -5, 24)-5
Math.random(): number
[ES1]
返回一个伪随机数 n
,其中 0 ≤ n
< 1。
/** Returns a random integer i with 0 <= i < max */
function getRandomInteger(max) {
return Math.floor(Math.random() * max);
}
Math.sign(x: number): number
[ES6]
返回数字的符号
> Math.sign(-8)-1
> Math.sign(0)0
> Math.sign(3)1