Math 对象
- Math 是 JavaScript 内置对象,提供数学运算,全部为静态方法 / 常量
- 方法名首字母大写,用
Math. 前缀调用,如 Math.abs(-3)
常量
- Math.PI
- Math.E
- Math.SQRT2
- Math.SQRT1_2
- Math.LN2
- Math.LN10
- Math.LOG2E
- Math.LOG10E
- 说明:无穷大用全局
Infinity,非数字用全局 NaN,不属于 Math 常量
基本运算
- Math.abs(x)
- Math.sqrt(x)
- Math.cbrt(x)
- Math.pow(x, y)
- Math.hypot(a, b, ...)
- Math.sign(x)
- Math.max(a, b, ...)
- Math.min(a, b, ...)
- Math.random()
- 返回
[0, 1)的随机小数,配合 Math.floor 取随机整数 - 示例:
Math.floor(Math.random() * 10) // 0-9 随机整数
- 说明:JS 没有阶乘 factorial、最大公约数 gcd、最小公倍数 lcm、modf 分解小数,需自行实现(gcd 可用辗转相除)
指数与对数
- Math.exp(x)
- Math.expm1(x)
- e^x - 1,x 接近 0 时比 exp(x)-1 更精确
- Math.log(x)
- 自然对数 ln(x),只有这一个底数参数,不支持指定 base
- Math.log2(x)
- Math.log10(x)
- Math.log1p(x)
- 说明:JS 没有类似改底数的
log(x, base),换底需自算,如 Math.log(x) / Math.log(2)
三角函数(弧度制)
- Math.sin(x)
- Math.cos(x)
- Math.tan(x)
- Math.asin(x)
- Math.acos(x)
- Math.atan(x)
- Math.atan2(y, x)
- 象限反正切,根据 x、y 符号返回 [-π, π] 正确象限角
- 双曲函数: sinh(x) / cosh(x) / tanh(x) / asinh(x) / acosh(x) / atanh(x)
- 说明:JS 没有 degrees / radians 转换,角度转弧度自行乘以
Math.PI / 180
取整
- Math.round(x)
- Math.ceil(x)
- Math.floor(x)
- Math.trunc(x)
- 区别示例:
- Math.round(2.5) // 3,Math.floor(2.5) // 2
- Math.trunc(-2.5) // -2,Math.floor(-2.5) // -3,负数的 ceil/floor/trunc 结果不同
数值判断(非 Math,是全局函数 / Number 静态方法)
- 说明:Math 本身没有 isfinite / isinf,JS 对应的是
Number 静态方法或全局函数 - Number.isFinite(x)
- Number.isNaN(x)
- Number.isInteger(x)
- Number.isSafeInteger(x)
- 全局 isFinite(x) / isNaN(x)
- 宽松版判断,会先转数字再判断,如
isNaN("abc") 返回 true