- toFixed方法存在一定的问题
toFixed使用的是银行家算法(四舍六入五成双):也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是偶数)。(这种方法在chrome浏览器里面不对,在ie里面是对的。)
下面这些数据并没有真正的实现四舍五入
(0.075).toFixed(2) // 0.07
(0.045).toFixed(2) // 0.04
(0.015).toFixed(2) // 0.01
我看到有一个人写的tofixed原理,下面这样写并没有上面的问题(针对负数进行计算的时候存在问题)。
function myToFixed(num,n){
//要取多少位小数,就先乘以10的多少次方
num *= Math.pow(10,n)
//在四舍五入取整
num = Math.round(num)
//再除以10的多少次方就是保留多少位小数了
num /= Math.pow(10,n)
return num
}
有个博主重写了toFixed方法,可以看一下。 blog.csdn.net/weixin_4254…