JS中toFixed()方法引起的問題如何解決
最近發(fā)現(xiàn)JS當(dāng)中toFixed()方法存在一些問題,采用原生的Number對象的原型對象上的toFixed()方法時,規(guī)則并不是所謂的“四舍五入”或者是“四舍六入五成雙”,所謂“四舍六入五成雙”,在百度百科上給的解釋是:也即“4舍6入5湊偶”這里“四”是指≤4 時舍去,"六"是指≥6時進(jìn)上,"五"指的是根據(jù)5后面的數(shù)字來定,當(dāng)5后有數(shù)時,舍5入1;當(dāng)5后無有效數(shù)字時,需要分兩種情況來講:①5前為奇數(shù),舍5入1;②5前為偶數(shù),舍5不進(jìn)。(0是最小的偶數(shù)) 。百度百科上涉及的幾個例子在實(shí)際情況下確實(shí)成立,但不科學(xué),并不能覆蓋所有的情況。
在浮點(diǎn)數(shù)末尾≤4或者≥6的情況下的舍入沒有爭議,但當(dāng)末尾正好等于5的情況下可謂混亂之極。
總結(jié):眾所周知,遵循IEEE754數(shù)值格式的語言的浮點(diǎn)計算會出現(xiàn)精度損耗的通病,ES也并非獨(dú)此一家,因此盡量不要進(jìn)行某個特定浮點(diǎn)數(shù)值的測試,如:0.1+0.2;
解決方案:重寫Number.prototype.toFixed()方法:
相關(guān)文章
JavaScript之map reduce_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript之map reduce的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06