文章目录
1. 圆周率
2. 获取随机数字
0~1
a~b 之间的随机数
Math.randon() * (b-a) + a
3. 获取两个数较小值较大值
数组最小值
Math.min.apply(null, arr)
4. 向上取整,向下取整,四舍五入
5. 绝对值
6. 正弦,余弦,正切
弧度值表示
7. 次方,平方根
三.Math 对象的扩展
ES 6 在 Math 对象上新增与数学相关的方法。所有这些方法都是静态方法,只能在 Math 对象上调用。
1. 截取,保留整数部分 Math.trunc()
Math.trunc
方法用于去除一个数的小数部分,返回整数部分。
Math.trunc(4.1) // 4
Math.trunc(4.9) // 4
Math.trunc(-4.1) // -4
Math.trunc(-4.9) // -4
Math.trunc(-0.1234) // -0
let a = 25;
let b = 12.25;
let c = 12.99;
console.log(Math.trunc(a)); // 25
console.log(Math.trunc(b)); // 12
console.log(Math.trunc(c)); // 12
- 对于非数值,
Math.trunc
内部使用Number
方法将其先转为数值。 - 对于空值和无法截取整数的值,返回
NaN
。
1.1 简写运算符
~~2.3
~~-2.3
2. Math.sign()
Math.sign
方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
它会返回五种值。
- 参数为正数,返回
+1
; - 参数为负数,返回
-1
; - 参数为 0,返回
0
; - 参数为-0,返回
-0
; - 其他值,返回
NaN
。
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
Math.sign('') // 0
Math.sign(true) // +1
Math.sign(false) // 0
Math.sign(null) // 0
Math.sign('9') // +1
Math.sign('foo') // NaN
Math.sign() // NaN
Math.sign(undefined) // NaN
如果是其他数据类型,比如字符串,布尔值,会先转成数字类型,在判断是整数还是负数,转不了就NaN
3. Math.cbrt()
Math.cbrt
方法用于计算一个数的立方根。
对于非数值,Math.cbrt
方法内部也是先使用Number
方法将其转为数值。
Math.cbrt(-1) // -1
Math.cbrt(0) // 0
Math.cbrt(1) // 1
Math.cbrt(27) // 3
4. Math.hypot()
Math.hypot
方法返回所有参数的平方和的平方根。
直角三角形求斜边
Math.hypot(3, 4); // 5
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); // 0
Math.hypot(NaN); // NaN
Math.hypot(3, 4, 'foo'); // NaN
Math.hypot(3, 4, '5'); // 7.0710678118654755
Math.hypot(-3); // 3
四. 指数运算符
ES2016 新增了一个指数运算符(**
)。
2 ** 2 // 4
2 ** 3 // 8
指数运算符可以与等号结合,形成一个新的赋值运算符(**=
)。
let a = 1.5;
a **= 2;
// 等同于 a = a * a;
let b = 4;
b **= 3;
// 等同于 b = b * b * b;