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