JS中toFixed()方法引起的問(wèn)題如何解決
最近發(fā)現(xiàn)JS當(dāng)中toFixed()方法存在一些問(wèn)題,采用原生的Number對(duì)象的原型對(duì)象上的toFixed()方法時(shí),規(guī)則并不是所謂的“四舍五入”或者是“四舍六入五成雙”,所謂“四舍六入五成雙”,在百度百科上給的解釋是:也即“4舍6入5湊偶”這里“四”是指≤4 時(shí)舍去,"六"是指≥6時(shí)進(jìn)上,"五"指的是根據(jù)5后面的數(shù)字來(lái)定,當(dāng)5后有數(shù)時(shí),舍5入1;當(dāng)5后無(wú)有效數(shù)字時(shí),需要分兩種情況來(lái)講:①5前為奇數(shù),舍5入1;②5前為偶數(shù),舍5不進(jìn)。(0是最小的偶數(shù)) 。百度百科上涉及的幾個(gè)例子在實(shí)際情況下確實(shí)成立,但不科學(xué),并不能覆蓋所有的情況。
在浮點(diǎn)數(shù)末尾≤4或者≥6的情況下的舍入沒(méi)有爭(zhēng)議,但當(dāng)末尾正好等于5的情況下可謂混亂之極。
總結(jié):眾所周知,遵循IEEE754數(shù)值格式的語(yǔ)言的浮點(diǎn)計(jì)算會(huì)出現(xiàn)精度損耗的通病,ES也并非獨(dú)此一家,因此盡量不要進(jìn)行某個(gè)特定浮點(diǎn)數(shù)值的測(cè)試,如:0.1+0.2;
解決方案:重寫(xiě)Number.prototype.toFixed()方法:
相關(guān)文章
javascript閉包的高級(jí)使用方法實(shí)例
這篇文章介紹了javascript閉包的高級(jí)使用方法實(shí)例,有需要的朋友可以參考一下2013-07-07javascript 日期時(shí)間 轉(zhuǎn)換的方法
javascript 日期時(shí)間 轉(zhuǎn)換的方法,需要的朋友可以參考一下2013-02-02javascript父、子頁(yè)面交互技巧總結(jié)
存放子頁(yè)面可以是iframe,又可以是frameset,本例介紹javascript父、子頁(yè)面交互技巧,需要的朋友可以參考下2014-08-08微信小程序?qū)崿F(xiàn)animation動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)animation動(dòng)畫(huà)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01JavaScript之map reduce_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript之map reduce的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06