1、起因:

返回結(jié)果是true。
2、原因:計(jì)算機(jī)的二進(jìn)制實(shí)現(xiàn)和位數(shù)限制有些數(shù)無(wú)法有限表示。就像一些無(wú)理數(shù)不能有限表示,如 圓周率 3.1415926...,1.3333... 等。JS 遵循 IEEE 754 規(guī)范,采用雙精度存儲(chǔ)(double precision),占用 64 bit。
3、解決方法
(1)toFixed(),存在兼容性(chrome)

(2)比較穩(wěn)妥方法(數(shù)字如果過(guò)大,也會(huì)有誤差):
*JS 中能精準(zhǔn)表示的最大整數(shù)是 Math.pow(2, 53),十進(jìn)制即 9007199254740992。 大于 9007199254740992 的可能會(huì)丟失精度
function round(num,d){//Step1:將num放大10的d次方倍num*=Math.pow(10,d);//Step2:對(duì)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ù)字舍入誤差以及解決方法(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注