- Math所有的属性和方法都是静态的
# 计算操作
# abs
- 作用:绝对值
- 调用:Math.abs(num)
- 入参:Number | any
- 返回:Number
console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // 1
console.log(Math.abs('-1')); // 1
console.log(Math.abs('a')); // NaN
console.log(Math.abs(undefined)); // NaN
console.log(Math.abs(null)); // 0
1
2
3
4
5
6
2
3
4
5
6
# max
- 作用:求入参的最大值
- 调用:Math.max(num[, num, num...])
- 入参:Number[, Number...]
- 返回:Number
console.log(Math.max(2, 3, 1, 20)); // 20
console.log(Math.max(8, 200, 10, 3.3)); // 200
console.log(Math.max(-16, -18, -2)); // -2
1
2
3
2
3
# min
- 作用:求入参的最小值
- 调用:Math.min(num[, num, num...])
- 入参:Number[, Number...]
- 返回:Number
console.log(Math.min(2, 3, 1, 20)); // 1
console.log(Math.min(8, 200, 10, 3.3)); // 3.3
console.log(Math.min(-16, -18, -2)); // -18
1
2
3
2
3
# ceil
- 作用:向上取整
- 调用:Math.ceil(num)
- 入参:Number
- 返回:Number
console.log(Math.ceil(0.1)); // 1
console.log(Math.ceil(1.9)); // 2
console.log(Math.ceil(-1.9)); // -1
1
2
3
2
3
# floor
- 作用:向下取整
- 调用:Math.floor(num)
- 入参:Number
- 返回:Number
console.log(Math.floor(0.1)); // 0
console.log(Math.floor(1.9)); // 1
console.log(Math.floor(-1.9)); // -2
1
2
3
2
3
# round
- 作用:四舍五入
- 调用:Math.round(num1)
- 入参:Number
- 返回:Number
console.log(Math.round(2.4)); // 2
console.log(Math.round(2.5)); // 3
1
2
2
# random
- 作用:求 (0-1)之间的随机数
- 调用:Math.random()
- 返回:Number
- tip:包括0不包括1
# pow
- 作用:求 num1 的 num2 次幂
- 调用:Math.pow(num1, num2)
- 入参:Number, Number
- 返回:Number
console.log(Math.pow(2, 3)); // 8
console.log(Math.pow(8, 2)); // 64
console.log(Math.pow(-2, 3)); // -8
console.log(Math.pow(-2, 2)); // 4
console.log(Math.pow(-2, -3)); // -0.125
1
2
3
4
5
2
3
4
5
# sqrt
- 作用:求平方根
- 调用:Math.sqrt(num1)
- 入参:Number
- 返回:Number
console.log(Math.sqrt(2)); // 1.4142135623730951
console.log(Math.sqrt(4)); // 2
console.log(Math.sqrt(9)); // 3
console.log(Math.sqrt(-9)); // NaN
1
2
3
4
2
3
4
# cbrt
- 作用:立方根
- 调用:Math.cbrt(num)
- 入参:Number
- 返回:Number
console.log(Math.cbrt(0)); // 0
console.log(Math.cbrt(1)); // 1
console.log(Math.cbrt(27)); // 3
1
2
3
2
3
# exp
- 作用:欧拉常数【e】的【x】次方
- 调用:Math.exp(num)
- 入参:Number
- 返回:Number
console.log(Math.exp(0)); // 1
console.log(Math.exp(1)); // 2.718281828459045
console.log(Math.exp(2)); // 7.38905609893065
1
2
3
2
3
# expm1
- 作用:【e】的【x】次方【-1】
- 调用:Math.expm1(num)
- 入参:Number
- 返回:Number
console.log(Math.expm1(0)); // 0
console.log(Math.expm1(1)); // 1.718281828459045
console.log(Math.expm1(2)); // 6.38905609893065
1
2
3
2
3
# sign
- 作用:返回数字的符号【+】【-】【0】
- 调用:Math.sign(num1)
- 入参:Number
- 返回:Number (1, -1, 0, -0, NaN)
console.log(Math.sign(2)); // 1
console.log(Math.sign(-2)); // -1
console.log(Math.sign(0)); // 0
console.log(Math.sign(-0)); // -0
console.log(Math.sign('3')); // 1
console.log(Math.sign('-3')); // -1
console.log(Math.sign('a')); // NaN
1
2
3
4
5
6
7
2
3
4
5
6
7
# hypot
- 作用:所有参数【平方和】【的平方根】
- 调用:Math.hypot(num,[ num...])
- 入参:Number[, Number...]
- 返回:Number
// 勾三股四弦五
console.log(Math.hypot(3, 4)); // 5
1
2
2
# imul
- 作用:两个整数相乘更快
- 调用:Math.imul(num, num)
- 入参:Number, Number
- 返回:Number
- tip:原理是转换成32位后做32位的乘法
# clz32
- 作用:数字在转换成 32 无符号整形数字的二进制形式后, 开头的 0 的个数
- 调用:Math.clz32(num)
- 入参:Number
- 返回:Number
console.log(Math.clz32(1)); // 31
console.log(Math.clz32(18)); // 27
console.log(Math.clz32(-5)); // 0
1
2
3
2
3
# 小数/对数
# trunc
- 作用:去掉小数部分
- 调用:Math.trunc(num1)
- 入参:Number
- 返回:Number
console.log(Math.trunc(2.1)); // 2
console.log(Math.trunc(2.9)); // 2
1
2
2
# fround
- 作用:64位双精度浮点数转化为32位单精度浮点数
- 调用:Math.fround(num)
- 入参:Number
- 返回:Number
- tip:64位双精度浮点数和32位单精度浮点数作比较会产生混乱,可以采用此方法转换
console.log(Math.fround(1)); // 1
console.log(Math.fround(1) === 1); // true
console.log(Math.fround(1.33)); // 1.3300000429153442
console.log(Math.fround(1.33) === 1.33); // false
console.log(Math.fround(1.337)); // 1.3370000123977661
console.log(Math.fround(1.337) === 1.337); // false
1
2
3
4
5
6
2
3
4
5
6
# log
- 作用:求对数
- 调用:Math.log(num)
- 入参:Number
- 返回:Number
console.log(Math.log(0)); // -Infinity
console.log(Math.log(1)); // 0
console.log(Math.log(20)); // 2.995732273553991
1
2
3
2
3
- 求logxY:以x为底Y的对数
function log(x, Y) {
return Math.log(Y) / Math.log(x);
}
1
2
3
2
3
# log10
- 作用:求以10为底的对数。求10的几次方等于该数
- 调用:Math.log10(num)
- 入参:Number
- 返回:Number
console.log(Math.log10(0)); // -Infinity
console.log(Math.log10(1)); // 0
console.log(Math.log10(20)); // 1.3010299956639813
1
2
3
2
3
# log1p
- 作用:数字 + 1 后求log的自然对数。相当于Math.log(num + 1)
- 调用:Math.log1p(num)
- 入参:Number
- 返回:Number
console.log(Math.log(2)); // 0.6931471805599453
console.log(Math.log1p(1)); // 0.6931471805599453
1
2
2
# log2
- 作用:求以2为底的对数。求2的几次方等于该数
- 调用:Math.log2(num)
- 入参:Number
- 返回:Number
console.log(Math.log2(2)); // 1
console.log(Math.log2(8)); // 3
console.log(Math.log2(16)); // 4
1
2
3
2
3
# 弧度计算
# sin
- 作用:求正弦值
- 调用:Math.sin(num1)
- 入参:Number
- 返回:Number (单位:弧度)
console.log(Math.sin(0)); // 0
console.log(Math.sin(1)); // 0.8414709848078965
1
2
2
# cos
- 作用:取余弦值
- 调用:Math.cos(num)
- 入参:Number
- 返回:Number
// 勾三股四弦五
console.log(Math.cos(3/5)); // 0.8253356149096783
console.log(Math.cos(0)); // 1
1
2
3
2
3
# tan
- 作用:求正切
- 调用:Math.tan(num1)
- 入参:Number
- 返回:Number (单位:弧度)
console.log(Math.tan(2)); // -2.185039863261519
console.log(Math.tan(4)); // 1.1578212823495777
1
2
2
# asin
- 作用:反正弦(单位为弧度)
- 调用:Math.asin(num)
- 入参:Number ( -1 ~ 1 )
- 返回:Number
console.log(Math.asin(-1)); // -1.5707963267948966
console.log(Math.asin(0)); // 0
console.log(Math.asin(1)); // 1.5707963267948966
1
2
3
2
3
# acos
- 作用:求反余弦值。以 -1 到 1 的一个数为参数,返回一个 0 到 pi (弧度)的数值
- 调用:Math.acos(num)
- 入参:Number (-1 ~ 1)
- 返回:Number
console.log(Math.acos(-2)); // NaN
console.log(Math.acos(-1)); // 3.141592653589793
console.log(Math.acos(0)); // 1.5707963267948966
console.log(Math.acos(1)); // 0
console.log(Math.acos(2)); // NaN
1
2
3
4
5
2
3
4
5
# atan
- 作用:反正切
- 调用:Math.atan(num)
- 入参:Number
- 返回:Number
console.log(Math.atan(0)); // 0
console.log(Math.atan(1)); // 0.7853981633974483
1
2
2
# sinh
- 作用:求双曲正弦值
- 调用:Math.sinh(num1)
- 入参:Number
- 返回:Number
console.log(Math.sinh(0)); // 0
console.log(Math.sinh('1')); // 1.1752011936438014
console.log(Math.sinh('a')); // NaN
1
2
3
2
3
# cosh
- 作用:双曲余弦值
- 调用:Math.cosh(num)
- 入参:Number
- 返回:Number
console.log(Math.cosh(-1)); // 1.5430806348152437
console.log(Math.cosh(0)); // 1
console.log(Math.cosh(1)); // 1.5430806348152437
1
2
3
2
3
# tanh
- 作用:求双曲正切
- 调用:Math.tanh(num1)
- 入参:Number
- 返回:Number
console.log(Math.tanh(2)); // 0.9640275800758169
1
# asinh
- 作用:反双曲正弦值
- 调用:Math.asinh(num)
- 入参:Number
- 返回:Number
console.log(Math.asinh(1)); // 0.881373587019543
console.log(Math.asinh(0)); // 0
1
2
2
# acosh
- 作用:返回一个数的反双曲余弦值
- 调用:Math.acosh(num)
- 入参:Number (num >= 1)
- 返回:Number
- tip:入参小于 1 则返回 NaN
console.log(Math.acosh(0)); // NaN
console.log(Math.acosh(1)); // 0
console.log(Math.acosh(2)); // 1.3169578969248166
1
2
3
2
3
# atanh
- 作用:反双曲正切
- 调用:Math.atanh(num)
- 入参:Number
- 返回:Number
console.log(Math.atanh(0)); // 0
console.log(Math.atanh(1)); // Infinity
console.log(Math.atanh(-1)); // -Infinity
1
2
3
2
3
# atan2
- 作用:从原点(0,0)到(num1, num2)点的线段与x轴正方向之间的平面角度(弧度值)
- 调用:Math.atan2(num1, num2)
- 入参:Number, Number
- 返回:Number
console.log(Math.atan2(90, 15)); // 1.4056476493802699
console.log(Math.atan2(15, 90)); // 0.16514867741462683
1
2
2
# 属性
# E
- 作用:自然对数底数,欧拉常数【e】
- 值:约等于 2.718
console.log(Math.E); // 2.718281828459045
1
# LN10
- 作用:10的自然对数
- 值:约为 2.302
console.log(Math.LN10); // 2.302585092994046
1
# LN2
- 作用:2的自然对数
- 值:约为 0.693
console.log(Math.LN2); // 0.6931471805599453
1
# LOG10E
- 作用:以 10 为底数,e 的对数
- 值:约为 0.434
console.log(Math.LOG10E); // 0.4342944819032518
1
# LOG2E
- 作用:以2为底数,E为对数
- 值:约为 1.442
console.log(Math.LOG2E); // 1.4426950408889634
1
# PI
- 作用:圆周率
- 值:约为3.14159
console.log(Math.PI); // 3.141592653589793
1
# SQRT1_2
- 作用:1/2的平方根
- 值:约为 0.707
console.log(Math.SQRT1_2); // 0.7071067811865476
1
# SQRT2
- 作用:2的平方根
- 值:约为 1.414
console.log(Math.SQRT2); // 1.4142135623730951
1