最近在对JS浮点数作运算的时候,涉及到结果的四舍五入时,利用JS的toFixed(n),对运算结果进行四舍五入,忽然间相同的数据在IE8和IE9得出的结果不一致,在排除和程序逻辑问题后,把问题定位在了不一样浏览器对toFixed结果的差别上,而后找到了谷老师发现不一样的浏览器获得的结果不一致,即便相同浏览器的不一样版本toFixed获得的结果页不一致。浏览器
想到了一个解决方法,不知能否,主要是经过提高小数至整数,就近取整后再恢复为小数,代码以下code
function round(num,n){ var dd=1; var tempnum; for(i=0;i<n;i++){ dd*=10; } tempnum=num*dd; tempnum=Math.round(tempnum); return formatnumber((tempnum/dd).toFixed(n),n); } //对小数格式化,四舍五入,不足补零 function formatnumber(value, num){ var a, b, c, i; a = value.toString(); b = a.indexOf("."); c = a.length; if (num == 0){ if (b != -1){ a = a.substring(0, b); } } else{ if (b == -1){ a = a + "."; for (i = 1; i <= num; i++){ a = a + "0"; } } else{ a = a.substring(0, b + num + 1); for (i = c; i <= b + num; i++){ a = a + "0"; } } } return a; }