Math

185 阅读2分钟

Math:专门提供了数学计算的API

强调:不能创建,不需要创建,直接使用!

唯一的属性:Math.PI

API:

1、取整:3种

  1. 上取整:只要超过一点点,就会取下一个整数,此方法小数位数不能超过15位否则会失效:Math.ceil(num);
    
  2. 下取整:不管超过多少,都会省略掉小数部分,此方法小数位数不能超过15位否则会失效:Math.floor(num);
    
  3.  四舍五入取整:Math.round(num);
    

问题: 四舍五入虽然不错,但是以上三个API只能取整

解决:棒的:parseFloat(num.toFixed(d)); ... // 既有四舍五入功能,又具有保留自定义小数位数的操作,结果是一个字符串

** 鄙视题: 示例

封装一个函数,实现可以自定义保留小数位数并且四舍五入的功能,但是不允许使用toFixed?

function round(num,d){
	num*=Math.pow(10,d);
	num=Math.round(num)
	num/=Math.pow(10,d);
	return num.toString();
}

2、乘方和开方

  • *乘方:Math.pow(底数,幂); - 简化连续的乘法
    
  •  开方:Math.sqrt(num); - 只能开平方
    

3、最大值和最小值

语法:Math.max/min(a,b,c,d,e,f....);

获取到最大的一个数或者最小的一个数
问题:不支持数组参数

*解决:Math.max/min.apply(Math,arr);

apply:自己没有的方法可以去借用	 
    
可以将数组打散为单个参数悄悄进行传入  

4、绝对值:将负数转为整数

Math.abs(num);

5、***随机数:只要页面上具有随机的功能,底层一定用到了随机数

Math.random() 已经是一个随机数了,随机的小数0-1,有可能取到0,但是绝对不可能取到1 - 意味着能取到最小值,但是取不到最大值

  •   公式:parseInt(Math.random()*(max-min+1)+min); 
    
其他

还具有三角函数

随机数案例:机选双色球 js源码

补充: 看出来了一个点:所有的引用类型底层都具有构造函数创建方式,除了Math,直接量简化写法其实是后续追加的操作