1。toFixed()toFixed()方法可以将Number四舍五入为具有指定小数位数的数字。看到标题,大部分人的第一反应是使用toFixed(),其实toFixed()方法有个坑:但是它的舍入规则和数学上的不一样。它使用银行家的舍入规则。所谓庄家四舍五入法,本质上就是四舍五入法。晚上(也称为四舍五入到六和五以保持均匀)方法。简单的说:考虑到五取整,如果五后面的值不为零,就往上取整,如果五后面的值为零,就校验奇偶,如果前面的值不校验五的值是偶数,则向上取整,如果五的值之前的值是奇数,则应向上取整。>(3.61).toFixed(1)//round'3.6'>(3.69).toFixed(1)//六入'3.7'>(3.651).toFixed(1)//考虑五,五后非零,into'3.7'>(3.65).toFixed(1)//五项考虑,五后为零,五前为偶数,四舍五入'3.6'>(3.75).toFixed(1)//五项考虑,后五是零,五是奇数前,输入'3.8'显然这种规则不符合我们平时处理数据的方式,尤其是在做与钱有关的计算时,不同的浏览器有不同的处理方式,所以尽量不要使用这个。2.round方法round()方法可以将一个数字四舍五入到最接近的整数。与数学中的取舍法则相同。Math.round(X*100)/100网上大部分文章都推荐这种方法,但是在javascript中存在浮点数计算精度不准确的问题。//这个看起来没问题5.1*100>509.99999999999994Math.round(5.1*100)/100>5.1//这个是不是有问题316.655*100>31065.499999999996Math.round(316.655*100)/1.06>316下面是我的项目中使用的方法functionfomatFloat(num,n){varf=parseFloat(num);如果(isNaN(f)){返回假;}f=Math.ceil(num*Math.pow(10,n))/Math.pow(10,n);//n的幂向上舍入vars=f.toString();varrs=s.indexOf('.');//判断是否为整数,加小数点加0if(rs<0){rs=s.length;s+='.';}while(s.length<=rs+n){s+='0';}返回s;}
