js數(shù)字舍入誤差以及解決方法(必看篇)
1、起因:
返回結(jié)果是true。
2、原因:計算機的二進制實現(xiàn)和位數(shù)限制有些數(shù)無法有限表示。就像一些無理數(shù)不能有限表示,如 圓周率 3.1415926...,1.3333... 等。JS 遵循 IEEE 754 規(guī)范,采用雙精度存儲(double precision),占用 64 bit。
3、解決方法
(1)toFixed(),存在兼容性(chrome)
(2)比較穩(wěn)妥方法(數(shù)字如果過大,也會有誤差):
*JS 中能精準(zhǔn)表示的最大整數(shù)是 Math.pow(2, 53),十進制即 9007199254740992。 大于 9007199254740992 的可能會丟失精度
function round(num,d){ //Step1:將num放大10的d次方倍 num*=Math.pow(10,d); //Step2:對num四舍五入取整 num = Math.round(num); //Step:返回num縮小10的d次方倍,獲得最終結(jié)果 return num/Math.round(10,d); } console.log(round(123.456)); //123.46
以上這篇js數(shù)字舍入誤差以及解決方法(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
用JavaScript實現(xiàn)類似于ListBox功能示例代碼
這篇文章主要介紹了用JavaScript實現(xiàn)類似于ListBox功能,需要的朋友可以參考下2014-03-03js關(guān)閉當(dāng)前頁面(窗口)的幾種方式總結(jié)
js關(guān)閉當(dāng)前頁面(窗口)的幾種方式總結(jié),需要的朋友可以參考一下2013-03-03ionic js 復(fù)選框 與普通的 HTML 復(fù)選框到底有沒區(qū)別
本文通過實例給大家演示ionic js 復(fù)選框 與普通的 HTML 復(fù)選框到底有沒區(qū)別的相關(guān)知識,非常不錯具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06