JavaScript在计算精度的时候出现不正确的现在,相信会让人头疼,比如
0.3 - 0.2 = 0.09999999999999998
0.2 * 1.5 = 0.30000000000000004,如果对精度要求不是那么高的话,可以用toFixed() 来实现。但是如果涉及到金钱那些,对精度比较高的,就不能用toFixed()了。

对精度没有那么高要求的

用原生的toFixed();

(0.3 - 0.2).toFixed(1) // 0.1 (0.2 * 1.5).toFixed(1) // 0.3

上面的运算看起来好像没有什么毛病啊,这里放一个我感觉解释的很详细的toFixed的一些坑点击阅读

对精度高的解决方案也很简单

//以这个数值为例 0.3 - 0.285 = 0.015000000000000013; //用原生的toFixed()在chrome、firefox、safari、opera结果是: (0.3 - 0.285).toFixed(); // 0.01 //但是在IE11等于: (0.3 - 0.285).toFixed(); // 0.02 //重写下toFixed的方法 num保留的数字,n保留的位数 function toFixed(num, n){ return parseInt(((num * (Math.pow(10, n))) + 0.5), 10) / Math.pow(10, n) } toFixed((0.3 - 0.285), 2) //都是等于 0.02了

因为在做项目的时候时候遇到了这个bug,所以就写出来记录下,如果能帮助到别人,那就更好了。