MathMath 是一个具有数据属性和用于处理数字的方法的对象。您可以将其视为简陋的模块:它在 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)
2Math.exp(x: number): number [ES1]
返回 ex(e 为欧拉数)。Math.log() 的反函数。
> Math.exp(0)
1
> Math.exp(1) === Math.E
trueMath.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)
2Math.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)
2Math.log2(x: number): number [ES6]
返回以 2 为底的 x 的对数。2 ** x 的反函数。
> Math.log2(1)
0
> Math.log2(2)
1
> Math.log2(4)
2Math.pow(x: number, y: number): number [ES1]
返回 xy,x 的 y 次方。与 x ** y 相同。
> Math.pow(2, 3)
8
> Math.pow(25, 0.5)
5Math.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)
3Math.floor(x: number): number [ES1]
返回满足 i ≤ x 的最大(最接近 +∞)整数 i。
> Math.floor(2.1)
2
> Math.floor(2.9)
2Math.round(x: number): number [ES1]
返回最接近 x 的整数。如果 x 的小数部分为 .5,则 .round() 向上舍入(到最接近正无穷大的整数)
> Math.round(2.4)
2
> Math.round(2.5)
3Math.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;
}
assert.equal(degreesToRadians(90), Math.PI/2);
function radiansToDegrees(radians) {
return radians / Math.PI * 180;
}
assert.equal(radiansToDegrees(Math.PI), 180);Math.acos(x: number): number [ES1]
返回 x 的反余弦。
> Math.acos(0)
1.5707963267948966
> Math.acos(1)
0Math.acosh(x: number): number [ES6]
返回 x 的反双曲余弦。
Math.asin(x: number): number [ES1]
返回 x 的反正弦。
> Math.asin(0)
0
> Math.asin(1)
1.5707963267948966Math.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)
-1Math.cosh(x: number): number [ES6]
返回 x 的双曲余弦。
Math.hypot(...values: number[]): number [ES6]
返回 values 的平方和的平方根(毕达哥拉斯定理)
> Math.hypot(3, 4)
5Math.sin(x: number): number [ES1]
返回 x 的正弦。
> Math.sin(0)
0
> Math.sin(Math.PI / 2)
1Math.sinh(x: number): number [ES6]
返回 x 的双曲正弦。
Math.tan(x: number): number [ES1]
返回 x 的正切。
> Math.tan(0)
0
> Math.tan(1)
1.5574077246549023Math.tanh(x: number): number; [ES6]
返回 x 的双曲正切。
Math.abs(x: number): number [ES1]
返回 x 的绝对值。
> Math.abs(3)
3
> Math.abs(-3)
3
> Math.abs(0)
0Math.clz32(x: number): number [ES6]
计算 32 位整数 x 中的前导零位。用于 DSP 算法。
> Math.clz32(0b01000000000000000000000000000000)
1
> Math.clz32(0b00100000000000000000000000000000)
2
> Math.clz32(2)
30
> Math.clz32(1)
31Math.max(...values: number[]): number [ES1]
将 values 转换为数字并返回最大值。
> Math.max(3, -5, 24)
24Math.min(...values: number[]): number [ES1]
将 values 转换为数字并返回最小值。
> Math.min(3, -5, 24)
-5Math.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