当前位置: 首页 > Web前端 > HTML

JS中小数四舍五入的简单介绍

时间:2023-03-28 11:36:16 HTML

JS的数字都是double浮点数类型。在我们的日常使用中,经常会有对数字进行四舍五入或者保留几位小数的需求。日前,拼多多以显示空间有限,99.99后有6位小数未显示为由打赢官司。工具功能。小数舍入Math说到小数舍入,Math对象提供的三个方法马上浮现在脑海中,Math.ceil:返回大于或等于给定数的最小整数Math.floor:返回小于或等于给定数的最小整数等于给定的数字整数Math.round:将数字四舍五入后返回最接近的整数Math.ceil(1.5)//2Math.floor(1.5)//1Math.round(1.5)//2Math.ceil(-1.5)//-1Math.floor(-1.5)//-2Math.round(-1.5)//-1Math的方法简单实用。问题是要写的字符很多。进行位运算时,小数部分会自动省略。常用位运算有:位与|,位与&,左移>>,右移<<只用于小数舍入,不改变原数,可以用下面的写法1.5|0//11.5>>0//11.5<<0//1-1.5|0//-1使用位运算来减少整数代码量,而不是正数的Math.floor,效果和Math.trunc完全一样。需要注意的是位操作的优先级低于1.5|0+1//1(1.5|0)+1//2toFixedtoFixed是数字的方法,用于返回固定小数位数的字符串,默认保留0位toFixed也是一个舍入规则,但只有一个5会四舍五入1.555.toFixed()//'2'1.555.toFixed(1)//'1.6'1.555.toFixed(2)//'1.55'1.555.toFixed(4)//'1.5550'一般在网页上显示金额和时间时使用。但是需要注意的是有些场合是不能四舍五入的,99.996是不能换算成100.00的,所以接下来实现自己的万能函数代码如下:/***@description:按照指定的规则处理数字*@param{number}num待处理的数*@param{number}bits保留的位数,默认为整数,允许传入负数*@param{number}sign四舍五入方式待执行,向下舍入0,向上舍入1四舍五入,2四舍五入,3直接截取*@param{number}type返回数据类型,0number,1string*@return{number|string}*/constfix=(num,bits=0,sign=2,type=0)=>{constpow=10**bitsnum*=powconstfun=['floor','ceil','round','trunc'][sign]num=Math[fun](num)num/=pow返回类型==0?num:num.toFixed(bits)}fix(99.996)//100fix(99.996,-1,0)//90fix(99.996,2,0,1)//'99.99'fix(99.996,2,1,1))//'100.00'结语文中如有不明白或不严谨的地方,欢迎评论提问。如果喜欢或者觉得有帮助,希望大家能够点赞关注,为作者打气。