Math 数学方法
- 方法集全部是静态属性和方法;
- Math是一种静态类,该类别不能实例化。
(补充:虽然跟整理主题无关,但是既然发现了,就列在这儿了。console.log(0.1+0.2===0.3); //结果为false ; 因为js处理小数点儿时有问题)
Math的静态属性
- Math.PI:π
1、console.log(Math.PI); //3.141592653589793
2、弧度变角度:180/Math.PI * 弧度;
3、角度转弧度:Math.PI/180 * 角度; - Math.SQRT2:2 的平方根
1、console.log(Math.SQRT2); //1.4142135623730951
2、该属性返回 2 的平方根。
Math的静态方法
-
Math.abs(); 绝对值
console.log(Math.abs(-5)); //5 -
Math.round(3.2); 四舍五入
舍入小细节:这个负数有点特别。
console.log(Math.round(-3.5)); //-3 -4+0.5 0.5入
console.log(Math.round(-3.6)); //-4 -4+0.4 0.4舍 -
Math.floor(); 向下取整
console.log(3.6); //3
console.log(-3.5); //-4
console.log(-3.6); //-4- 也可以用 ~~(双非按位取反运算符),比Math.floor()速度更快些。
不过要注意,对于正数,它向下取整;对于负数,向上取整;对于非数字取值为0,具体表现形式如下:
- 也可以用 ~~(双非按位取反运算符),比Math.floor()速度更快些。
-
Math.ceil(); 向上取整
console.log(3.2); //4 -
Math.max(); 求最大值;
Math.min(); 求最小值。
1、直接求最大、最小值
console.log(Math.max(3, 5, 7, 8)); //8
console.log(Math.min(3, 5, 7, 8)); //3
2、求数组中的最大、最小值
var arr=[1,24,53,0];
conso.log(Math.max.apply(null,arr)); //10
conso.log(Math.min.apply(null,arr)); //1
apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性。
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args–>arguments)
(参考:https://www.cnblogs.com/chenhuichao/p/8493095.html)
-
Math.sqrt(); 求平方根,速度较之下面的pow快
console.log(Math.sqrt(9)); //3 -
Math.pow(); 求幂(求几次方&平方根&立方根)
console.log(Math.pow(2,2)); //4 2的2次幂为4
console.log(Math.pow(2,4)); //16 2的4次幂为16
console.log(Math.pow(2,0.5));//1.4142135623730951 2的平方根 属性Math.SQRT2是2的平方根
console.log(Math.pow(4,0.5));//2 平方根 速度较慢
console.log(Math.pow(27,1/3));//3 立方根
//求2的次方幂,还可以用移位,但只能求2的,且次方数有限制(位)
console.log(1<<30); //1073741824 最高2的30次幂(是正确的)
console.log(Math.pow(2,30)); //1073741824
- Math.random(); 随机值0~1,但不包含1
Math.ceil(Math.random); //包含1
Math.floor(Math.random()*(max-min))+min;//传入min、max的值,可以求介于两者之间的随机数。
function random(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
console.log(random(50, 150)); //介于50~150间的随机数