Math

基础概述

Math 是 JavaScript 的内置对象,提供数学常数和函数。Math 不像其他对象那样可以构造实例,它是全局对象,所有方法直接通过 Math 调用。


常用的数学常量

  1. Math.PI
    表示圆周率(π)。
    值: 3.141592653589793

    1
    console.log(Math.PI); // 3.141592653589793
  2. Math.E
    表示自然对数的底数(e)。
    值: 2.718281828459045

    1
    console.log(Math.E); // 2.718281828459045
  3. Math.LN2
    表示 2 的自然对数。
    值: 0.6931471805599453

  4. Math.LN10
    表示 10 的自然对数。
    值: 2.302585092994046

  5. Math.LOG2E
    表示以 2 为底的 e 的对数。
    值: 1.4426950408889634

  6. Math.LOG10E
    表示以 10 为底的 e 的对数。
    值: 0.4342944819032518

  7. Math.SQRT2
    表示 2 的平方根。
    值: 1.4142135623730951

  8. Math.SQRT1_2
    表示 1/2 的平方根。
    值: 0.7071067811865476


取整方法

  1. Math.floor(x)
    向下取整,返回小于等于 x 的最大整数。

    1
    2
    console.log(Math.floor(4.7)); // 4
    console.log(Math.floor(-4.7)); // -5
  2. Math.ceil(x)
    向上取整,返回大于等于 x 的最小整数。

    1
    2
    console.log(Math.ceil(4.1)); // 5
    console.log(Math.ceil(-4.1)); // -4
  3. Math.round(x)
    四舍五入,返回最接近的整数。

    1
    2
    console.log(Math.round(4.5)); // 5
    console.log(Math.round(-4.5)); // -4
  4. Math.trunc(x)
    去掉小数部分,返回整数部分。

    1
    2
    console.log(Math.trunc(4.9)); // 4
    console.log(Math.trunc(-4.9)); // -4

绝对值与符号

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

    1
    console.log(Math.abs(-7)); // 7
  2. Math.sign(x)
    返回数字的符号:1 表示正数,-1 表示负数,0 表示零。

    1
    2
    3
    console.log(Math.sign(10)); // 1
    console.log(Math.sign(-10)); // -1
    console.log(Math.sign(0)); // 0

幂和平方根

  1. Math.pow(base, exponent)
    返回 baseexponent 次幂。

    1
    console.log(Math.pow(2, 3)); // 8
  2. Math.sqrt(x)
    返回 x 的平方根。

    1
    console.log(Math.sqrt(16)); // 4
  3. Math.cbrt(x)
    返回 x 的立方根。

    1
    console.log(Math.cbrt(27)); // 3

随机数

  1. Math.random()
    返回 [0, 1) 范围的伪随机数。

    1
    console.log(Math.random()); // 0.123456789 (示例)

    生成指定范围的随机数:

    1
    2
    3
    4
    function getRandom(min, max) {
    return Math.random() * (max - min) + min;
    }
    console.log(getRandom(1, 10)); // 1 到 10 的随机数

对数与指数

  1. Math.log(x)
    返回 x 的自然对数(底数 e)。

    1
    console.log(Math.log(Math.E)); // 1
  2. Math.log10(x)
    返回 x 的以 10 为底的对数。

    1
    console.log(Math.log10(100)); // 2
  3. Math.log2(x)
    返回 x 的以 2 为底的对数。

    1
    console.log(Math.log2(8)); // 3
  4. Math.exp(x)
    返回 e 的 x 次幂。

    1
    console.log(Math.exp(1)); // 2.718281828459045

三角函数

  1. 正弦、余弦、正切

    • Math.sin(x)
    • Math.cos(x)
    • Math.tan(x)
    1
    2
    3
    console.log(Math.sin(Math.PI / 2)); // 1
    console.log(Math.cos(0)); // 1
    console.log(Math.tan(Math.PI / 4)); // 1
  2. 反三角函数

    • Math.asin(x)
    • Math.acos(x)
    • Math.atan(x)
    • Math.atan2(y, x)
    1
    2
    console.log(Math.asin(1)); // π/2
    console.log(Math.atan2(1, 1)); // π/4

最值

  1. Math.max(...values)
    返回一组数中的最大值。

    1
    console.log(Math.max(10, 20, 30)); // 30
  2. Math.min(...values)
    返回一组数中的最小值。

    1
    console.log(Math.min(10, 20, 30)); // 10

超前方法

  1. Math.hypot(...values)
    返回所有参数平方和的平方根。

    1
    console.log(Math.hypot(3, 4)); // 5

不常用但也重要的方法

  1. Math.fround(x)
    返回最接近 x 的单精度浮点数表示。
    用途: 用于处理单精度浮点数运算。

    1
    2
    console.log(Math.fround(1.337)); // 1.3370000123977661
    console.log(Math.fround(1.5)); // 1.5
  2. Math.imul(a, b)
    执行两个数的 32 位整数乘法。
    用途: 更高效的位运算中使用。

    1
    2
    console.log(Math.imul(2, 3)); // 6
    console.log(Math.imul(-2, 3)); // -6
  3. Math.clz32(x)
    返回 32 位整数的二进制表示中前导零的个数。
    用途: 位运算分析。

    1
    2
    console.log(Math.clz32(1)); // 31
    console.log(Math.clz32(16)); // 27
  4. Math.expm1(x)
    返回 e^x - 1 的结果。
    用途: 在处理接近零的指数运算时更精确。

    1
    console.log(Math.expm1(1)); // 1.718281828459045
  5. Math.log1p(x)
    返回 ln(1 + x) 的值,x 接近 0 时的对数计算更精确。
    用途: 数值计算中避免精度损失。

    1
    console.log(Math.log1p(0.5)); // 0.4054651081081644
  6. Math.tanh(x)
    返回双曲正切值。
    用途: 处理双曲函数的场景,比如科学计算。

    1
    console.log(Math.tanh(0)); // 0
  7. Math.sinh(x) / Math.cosh(x)
    返回双曲正弦/双曲余弦值。

    1
    2
    console.log(Math.sinh(1)); // 1.1752011936438014
    console.log(Math.cosh(1)); // 1.5430806348152437

这些方法虽然用得较少,但在某些特定的科学计算或高精度运算场景中非常重要!

总结:
Math 对象为处理数学运算提供了丰富的方法,涵盖了取整、随机数生成、对数、幂运算、三角函数等常见需求,灵活运用这些方法可以大大简化代码逻辑,提高开发效率。