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的小数位的幂数

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM