toFixed方法重寫,toFixed四捨五入在數值很小時的精度問題
阿新 • • 發佈:2019-02-04
先上重寫程式碼:
Number.prototype.toFixed = function(s) { var changenum = (parseInt(this * Math.pow(10, s) + 0.5) / Math.pow(10, s)).toString(); index = changenum.indexOf("."); if (index < 0 && s > 0) { changenum = changenum + "."; for (i = 0; i < s; i++) { changenum = changenum + "0"; } } else { index = changenum.length - index; for (i = 0; i < (s - index) + 1; i++) { changenum = changenum + "0"; } } return changenum; }
問題環境:1、 在對數值0.005進行四捨五入保留2為數字時,在ie8會發現0.005.toFixed(2)=0.00
2、在toFixed使用小數點後為0的數字都被忽略, 沒有保留0作為小數位
相關文章: