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