項目中遇到的問題,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的小數位的冪數