js保留小数位数(进位舍去)问题
toFixed(x)
这个方法在使用时,它内部对于进位舍去并没有使用四舍五入方法,而是使用的是银行家舍去法,即:
- 舍去位的数值小于5时,直接舍去
- 舍去位的数值大于等于6时,进位舍去
- 当舍去位的数值等于5时,分为两种情况:5后面还有其他数字(非0),则进位后舍去;若5后面是0,则根据5前一位数的奇偶性来判断是否需要进位,奇数进位,偶数舍去。
结果为:
let a = 0.45265; console.log(a.toFixed(1))//5=5,由于后面存在数字2!=0,进位 console.log(a.toFixed(2))//2<5,舍去 console.log(a.toFixed(3))//6>5,进位 console.log(a.toFixed(4))//5=5,且5后面不存在数字>0 console.log(a.toFixed(5)) //结果 0.5 0.45 0.453 0.4526 0.45265