前言
工作当中还是经常用到保留小数点的情况,有需要四舍五入的,有不需要四舍五入的,还有要整数还要在小数点后补零,总之情况还是很多的,这次研究一下常用的几个,下次敲代码复制就好。程序员就是懒啊
四舍五入toFixed
这里需要用到的是toFixed函数,toFixed() 方法可以将数字转换为字符串,并指定小数点后保留几位。如果小数实际位数不够指定的位数,不足的部分会补 0。
toFixed() 使用的是银行家舍入规则:四舍六入五取偶(又称四舍六入五留双)。 银行家舍入法: 四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
(1.015).toFixed(2); // 1.01
(1.025).toFixed(2); // 1.03
因为返回的是字符串,所以还要变为数字
function numPoint(num,point) {
return parseFloat(num.toFixed(point));
}
// 输出结果为 1.23
console.log(numPoint(1.2294,2))
四舍五入Math.round
要是觉得这样的四舍五入有点怪,那可以继续写。Math.round函数返回一个数字四舍五入后最接近的整数.Math.pow是乘方。因为Math.round返回结果是整数,所以要乘10的小数点的乘方,再除以10的小数点的乘方
function numPoint(num,point) {
return Math.round(num*Math.pow(10,point))/Math.pow(10,point);
}
console.log(numPoint(1.015,2))
console.log(numPoint(1.025,2))
四舍五入小数点后补零
前面几种方式结果是整数的话是不会自动补零的,那么现在开始写小数点后面不足的位数会自动补零的方式。 只能字符串保存后面的零了。
function numPoint(num, point) {
let newNum = Math.round(num * Math.pow(10, point)) / Math.pow(10, point);
let str = newNum.toString()
if (str.indexOf('.') < 0) {
str += '.';
}
for (let i = str.length - str.indexOf('.'); i <= point; i++) {
str += "0";
}
return str;
}
console.log(numPoint(1, 2))
不四舍五入
Math对象有两个方法,分别是floor下取整,ceil上取整。所以这两个方法都可以使用
function numPoint(num,point) {
return Math.floor(num*Math.pow(10,point))/Math.pow(10,point);
}
总结
这个保留技术不难,但场景还是挺复杂的,需求也太灵活了,具体还是看需求来吧,常用的几种情况大概都包括了,如果还有其他特殊需求的话,那就只能再具体研究分析了,实在不行就直接后台计算好返回给前台结果就行。
好啦,本节内容就总结到这里。我的文章都是学习过程中的总结,希望能够和小伙伴们共同进步共同学习,如果发现错误,也欢迎留言指出,我及时更正。