Math
Math
基础概述
Math
是 JavaScript 的内置对象,提供数学常数和函数。Math
不像其他对象那样可以构造实例,它是全局对象,所有方法直接通过 Math
调用。
常用的数学常量
Math.PI
表示圆周率(π)。
值:3.141592653589793
1
console.log(Math.PI); // 3.141592653589793
Math.E
表示自然对数的底数(e)。
值:2.718281828459045
1
console.log(Math.E); // 2.718281828459045
Math.LN2
表示 2 的自然对数。
值:0.6931471805599453
Math.LN10
表示 10 的自然对数。
值:2.302585092994046
Math.LOG2E
表示以 2 为底的 e 的对数。
值:1.4426950408889634
Math.LOG10E
表示以 10 为底的 e 的对数。
值:0.4342944819032518
Math.SQRT2
表示 2 的平方根。
值:1.4142135623730951
Math.SQRT1_2
表示 1/2 的平方根。
值:0.7071067811865476
取整方法
Math.floor(x)
向下取整,返回小于等于x
的最大整数。1
2console.log(Math.floor(4.7)); // 4
console.log(Math.floor(-4.7)); // -5Math.ceil(x)
向上取整,返回大于等于x
的最小整数。1
2console.log(Math.ceil(4.1)); // 5
console.log(Math.ceil(-4.1)); // -4Math.round(x)
四舍五入,返回最接近的整数。1
2console.log(Math.round(4.5)); // 5
console.log(Math.round(-4.5)); // -4Math.trunc(x)
去掉小数部分,返回整数部分。1
2console.log(Math.trunc(4.9)); // 4
console.log(Math.trunc(-4.9)); // -4
绝对值与符号
Math.abs(x)
返回x
的绝对值。1
console.log(Math.abs(-7)); // 7
Math.sign(x)
返回数字的符号:1
表示正数,-1
表示负数,0
表示零。1
2
3console.log(Math.sign(10)); // 1
console.log(Math.sign(-10)); // -1
console.log(Math.sign(0)); // 0
幂和平方根
Math.pow(base, exponent)
返回base
的exponent
次幂。1
console.log(Math.pow(2, 3)); // 8
Math.sqrt(x)
返回x
的平方根。1
console.log(Math.sqrt(16)); // 4
Math.cbrt(x)
返回x
的立方根。1
console.log(Math.cbrt(27)); // 3
随机数
Math.random()
返回[0, 1)
范围的伪随机数。1
console.log(Math.random()); // 0.123456789 (示例)
生成指定范围的随机数:
1
2
3
4function getRandom(min, max) {
return Math.random() * (max - min) + min;
}
console.log(getRandom(1, 10)); // 1 到 10 的随机数
对数与指数
Math.log(x)
返回x
的自然对数(底数 e)。1
console.log(Math.log(Math.E)); // 1
Math.log10(x)
返回x
的以 10 为底的对数。1
console.log(Math.log10(100)); // 2
Math.log2(x)
返回x
的以 2 为底的对数。1
console.log(Math.log2(8)); // 3
Math.exp(x)
返回 e 的x
次幂。1
console.log(Math.exp(1)); // 2.718281828459045
三角函数
正弦、余弦、正切
Math.sin(x)
Math.cos(x)
Math.tan(x)
1
2
3console.log(Math.sin(Math.PI / 2)); // 1
console.log(Math.cos(0)); // 1
console.log(Math.tan(Math.PI / 4)); // 1反三角函数
Math.asin(x)
Math.acos(x)
Math.atan(x)
Math.atan2(y, x)
1
2console.log(Math.asin(1)); // π/2
console.log(Math.atan2(1, 1)); // π/4
最值
Math.max(...values)
返回一组数中的最大值。1
console.log(Math.max(10, 20, 30)); // 30
Math.min(...values)
返回一组数中的最小值。1
console.log(Math.min(10, 20, 30)); // 10
超前方法
Math.hypot(...values)
返回所有参数平方和的平方根。1
console.log(Math.hypot(3, 4)); // 5
不常用但也重要的方法
Math.fround(x)
返回最接近x
的单精度浮点数表示。
用途: 用于处理单精度浮点数运算。1
2console.log(Math.fround(1.337)); // 1.3370000123977661
console.log(Math.fround(1.5)); // 1.5Math.imul(a, b)
执行两个数的 32 位整数乘法。
用途: 更高效的位运算中使用。1
2console.log(Math.imul(2, 3)); // 6
console.log(Math.imul(-2, 3)); // -6Math.clz32(x)
返回 32 位整数的二进制表示中前导零的个数。
用途: 位运算分析。1
2console.log(Math.clz32(1)); // 31
console.log(Math.clz32(16)); // 27Math.expm1(x)
返回e^x - 1
的结果。
用途: 在处理接近零的指数运算时更精确。1
console.log(Math.expm1(1)); // 1.718281828459045
Math.log1p(x)
返回ln(1 + x)
的值,x 接近 0 时的对数计算更精确。
用途: 数值计算中避免精度损失。1
console.log(Math.log1p(0.5)); // 0.4054651081081644
Math.tanh(x)
返回双曲正切值。
用途: 处理双曲函数的场景,比如科学计算。1
console.log(Math.tanh(0)); // 0
Math.sinh(x)
/Math.cosh(x)
返回双曲正弦/双曲余弦值。1
2console.log(Math.sinh(1)); // 1.1752011936438014
console.log(Math.cosh(1)); // 1.5430806348152437
这些方法虽然用得较少,但在某些特定的科学计算或高精度运算场景中非常重要!
总结:Math
对象为处理数学运算提供了丰富的方法,涵盖了取整、随机数生成、对数、幂运算、三角函数等常见需求,灵活运用这些方法可以大大简化代码逻辑,提高开发效率。