我们知道,由于精度的问题,在JavaScript中,0.1 + 0.2 并不等于 0.3,而是0.300000004,这就会实际导致一些问题,解决这个问题也有许多办法,有些第三方库(如decimal.js或big.js)提供了高精度的十进制数运算,可以避免这种误差。这里我们提供一个简单的方法,我们观察发现,这个误差是超级小的,一般是小数点后一连串的0000000,列如0.300000004或者一连串的999999列如0.299999996,这样我们直接判断小数位是否有则两串就好了,如下:
function formatNum(num) {
var d = num + '';
if (d.indexOf('.') > -1 && d.split('.')[1].length > 8) {
var ns = d.split('.'); f = ns[1], fi = f.indexOf('999999');
if (fi == -1) fi = f.indexOf('000000');
if (fi > -1) num = parseFloat(num.toFixed(fi));
}
return num;
}
一个小小的函数,搞定!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...