toFixed方法的小坑你知道吗?
都知道toFixed()方法是可以四舍五入指定的小数位数的方法,但是他也是有坑的。
其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则, 其实就是一种四舍六入五取偶的规则,
大概意思就是是:
当小数点保留两位数时
1、第三位小数是小于5就舍去,
2、当小数点第三位小数是等于5时,小数点的第二位小数是奇数的话就入1,是偶数的话就舍去
3.当小数点的第三位小数是大于5的话,就入1,
我在项目中就遇到了, 而且好像不同浏览器也不一样
Number(value) / Number(newList[rowIndex].product.price).toFixed(2)
解决的办法就是使用Math.round()配合Number.EPSILON(只知道这个方法是辅助精度计算ES6新特性,具体什么原理俺还没有细研究呢)
(Math.round(((Number(value) / Number(newList[rowIndex].product.price))+Number.EPSILON)*100)/100).toFixed(2)