JS中toFixed()方法所引起的問題如何解決_javascript技巧
May 16, 2016 pm 05:48 PM
js
最近發現JS當中toFixed()方法存在一些問題,採用原生的Number對象的原型對像上的toFixed()方法時,規則並不是所謂的“四捨五入”或者是“四捨六入五成雙”,所謂“四捨六入五成雙”,在百度百科上給的解釋是:也即“4舍6入5湊偶”這裡“四”是指≤4 時捨去,"六"是指≥6時進上,"五"指的是根據5後面的數字來定,當5後有數時,捨5入1;當5後無有效數字時,需要分兩種情況來講:①5前為奇數,捨5入1;②5前為偶數,捨5不進。 (0是最小的偶數) 。百度百科上涉及的幾個例子在實際情況下確實成立,但不科學,並不能涵蓋所有的情況。
測試瀏覽器:屌絲瀏覽器IE6以及高級屌絲瀏覽器IE78和所有現代主流瀏覽器包括IE9、IE10、FF、chrome、opera、safari。 (註:使用IE10的類似firebug的開發工具時,採用相容IE低版瀏覽器模式時的測試結果跟使用原生低版IE瀏覽器的測試結果不一致)
在浮點數末尾≤ 4或≥6的情況下的捨入沒有爭議,但當末尾正好等於5的情況下可謂混亂之極。
總結:眾所周知,遵循IEEE754數值格式的語言的浮點計算會出現精度損耗的通病,ES也並非獨此一家,因此盡量不要進行某個特定浮點數值的測試,如:0.1 0.2;
解決方案:重寫Number.prototype.toFixed()方法:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)