當我們想修正此方法時,變成四捨五入時,網上搜到的方法都是這種,
但是下面的這個方法是有問題的
number.prototype.tofixed = function(b)
} else
}if (this < 0) else
};
如果不信,可以試下用上面的來改寫,然後試試這個 266.215.tofixed(2) 結果肯定不是266.22 你得到的是 266.21
上面的這個方法問題出在 +0.5 這個地方。
所以我們換種方式來進行小數字格式化
number.prototype.tofixed=function (d) )?)\\d*$").test(s))else break;}}
s=a.join("").replace(new regexp("(\\d+)(\\d)\\d$"),"$1.$2");
}if(b)s=s.substr(1);
return (pm+s).replace(/\.$/,"");
}return this+"";
};
經過我時間和實際場景的多次測試發現,這個可以解決上述問題的
這裡還要多感謝 這位老兄,讓我找了很多地方也實驗了很多方法,才得出這位老兄的方法是完全正確的
借鑑位址
JS中的toFixed 四捨五入方法
方法一 在js中四捨五入的函式 tofixed n n為要保留的小數字數。n為0 20,當n超過20的時候,js會出錯。如果小數點前和要擷取的前一位都是0時,不會按常理擷取。var h 0.07 h.tofixed 1 的值為0.0其實要解決這個問題,原來是不一定要重寫js中的number型別的to...
JS的toFixed的四捨五入精準問題
1.谷歌瀏覽器 55.0.2883.87 m 2.火狐瀏覽器 44.0.2 3.ie瀏覽器 11.545.10586.0 var num 3.445 console.log num.tofixed 2 1.谷歌 3.44 2.火狐 3.44 3.ie 3.45 不同瀏覽器的js引擎對 四捨五入的邊界...
js之toFixed()四捨五入丟失精度的問題解決
1 tofixed方法 tofixed 方法可把 number 四捨五入為指定小數字數的數字。例如將資料num保留2位小數,則表示為 tofixed num 但是其四捨五入的規則與數學中的規則不同,使用的是銀行家捨入規則,銀行家捨入 所謂銀行家捨入法,其實質是一種四捨六入五取偶 又稱四捨六入五留雙 ...