Js中带有小数的值相加产生的问题

项目中遇到的问题,0.1+0.2为0.30000000000000004,与想象中不一样,

解决办法:

 1  function addNum (num1, num2) {
 2        var sq1,sq2,m;
 3        try {
 4          sq1 = num1.toString().split(".")[1].length;
 5        }
 6        catch (e) {
 7          sq1 = 0;
 8        }
 9        try {
10          sq2 = num2.toString().split(".")[1].length;
11        }
12        catch (e) {
13          sq2 = 0;
14        }
15        m = Math.pow(10,Math.max(sq1, sq2));
16        return (num1 * m + num2 * m) / m;
17      }
18      alert(addNum(0.1, 0.2));

原理就是先判断俩个相加数谁的小数点后位数多,以多的为准,值乘以10的小数位的幂数,相加以后,再除以10的小数位的幂数

 

posted @ 2018-05-31 11:20  zhaobao1830  阅读(10873)  评论(0编辑  收藏  举报