最近在對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; }