1NetMedia_Blog

<< 打开浏览器窗口的一些方法总结  类别: JS 几种ES5方法的兼容性封装 >>
Math对象取整及四舍五入
[ 日期: 2019-05-05 2:37:12 PM | 作者: admin | 来源: Original | 人气:154 | 晴天 | 心情: +2 ] 字号: 【
急速栏目链接:
标签:Math  |  取整  |  四舍五入  |  
基础知识:
Math只提供数学方法,不封装数据,不能new
上取整:Math.ceil(num);//只要超过就取下一个
下取整:Math.floor(num);//只要超过就省略
位运算下取整:num^0, num|0, num>>>0
四舍五入:Math.round(num);//Math.round(12.56)-->13
小数四舍五入: toFixed(d) 0~20 //(12.56).toFixed(1) --> 12.6


自定义四舍五入通用方法,不论位数,通用,如-1是个位四舍五入,-2是十位四舍五入==

function round(num,d){
  if(!d){d=0}//没有的,则个位四舍五入取整
  // 1.先让num*10的d次方
  num*= Math.pow(10,d);
  //console.log(num);//舍入误差
  // 2.将num四舍五入取整
  num = Math.round(num);
  // 3.返回num/10的d次方
  return num/Math.pow(10,d);
}

console.log(round(123.456,2)); //123.46
console.log(round(234.567,0)); //235
console.log(round(161,-1)); //160
console.log(round(168,-1)); //170

//特殊:舍入误差
console.log(round(555.555,2)); //555.56--> 555.55
可以直接扩展Math对象方法:
Math.myRound = function(num,d){
  if(!d){d=0}
  num*= Math.pow(10,d);
  num = Math.round(num);
  return num/Math.pow(10,d);
}


关于舍入误差:
https://baike.baidu.com/item/%E8%88%8D%E5%85%A5%E8%AF%AF%E5%B7%AE/4776511?fr=aladdin
https://blog.csdn.net/yingmuliuchuan/article/details/81043549

   
Rss Comment  

没有相关评论

发表评论
请先注册,才能发表评论!
- 注册 -