最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript 浮點(diǎn)運(yùn)算的問(wèn)題分析與解決方法

 更新時(shí)間:2013年08月27日 15:00:24   作者:  
JavaScript 只有一種數(shù)字類型 Number ,而且在Javascript中所有的數(shù)字都是以IEEE-754標(biāo)準(zhǔn)格式表示的。 浮點(diǎn)數(shù)的精度問(wèn)題不是JavaScript特有的,因?yàn)橛行┬?shù)以二進(jìn)制表示位數(shù)是無(wú)窮的

十進(jìn)制           二進(jìn)制
0.1              0.0001 1001 1001 1001 ...
0.2              0.0011 0011 0011 0011 ...
0.3              0.0100 1100 1100 1100 ...
0.4              0.0110 0110 0110 0110 ...
0.5              0.1
0.6              0.1001 1001 1001 1001 ...
所以比如 1.1 ,其程序?qū)嶋H上無(wú)法真正的表示 ‘1.1',而只能做到一定程度上的準(zhǔn)確,這是無(wú)法避免的精度丟失:

1.09999999999999999
在JavaScript中問(wèn)題還要復(fù)雜些,這里只給一些在Chrome中測(cè)試數(shù)據(jù):

 輸入               輸出
1.0-0.9 == 0.1     False
1.0-0.8 == 0.2     False
1.0-0.7 == 0.3     False
1.0-0.6 == 0.4     True
1.0-0.5 == 0.5     True
1.0-0.4 == 0.6     True
1.0-0.3 == 0.7     True
1.0-0.2 == 0.8     True
1.0-0.1 == 0.9     True
解決
那如何來(lái)避免這類 1.0-0.9 != 0.1 的非bug型問(wèn)題發(fā)生呢?下面給出一種目前用的比較多的解決方案, 在判斷浮點(diǎn)運(yùn)算結(jié)果前對(duì)計(jì)算結(jié)果進(jìn)行精度縮小,因?yàn)樵诰瓤s小的過(guò)程總會(huì)自動(dòng)四舍五入:

復(fù)制代碼 代碼如下:

(1.0-0.9).toFixed(digits)                   // toFixed() 精度參數(shù)須在 0 與20 之間
parseFloat((1.0-0.9).toFixed(10)) === 0.1   // 結(jié)果為T(mén)rue
parseFloat((1.0-0.8).toFixed(10)) === 0.2   // 結(jié)果為T(mén)rue
parseFloat((1.0-0.7).toFixed(10)) === 0.3   // 結(jié)果為T(mén)rue
parseFloat((11.0-11.8).toFixed(10)) === -0.8   // 結(jié)果為T(mén)rue

方法提煉
復(fù)制代碼 代碼如下:

// 通過(guò)isEqual工具方法判斷數(shù)值是否相等
function isEqual(number1, number2, digits){
 digits = digits == undefined? 10: digits; // 默認(rèn)精度為10
 return number1.toFixed(digits) === number2.toFixed(digits);
}

isEqual(1.0-0.7, 0.3);  // return true

// 原生擴(kuò)展方式,更喜歡面向?qū)ο蟮娘L(fēng)格
Number.prototype.isEqual = function(number, digits){
 digits = digits == undefined? 10: digits; // 默認(rèn)精度為10
 return this.toFixed(digits) === number.toFixed(digits);
}

(1.0-0.7).isEqual(0.3); // return true

相關(guān)文章

最新評(píng)論

衡南县| 永吉县| 琼海市| 静安区| 黔南| 庄浪县| 金溪县| 镇宁| 讷河市| 华阴市| 永兴县| 时尚| 原阳县| 静安区| 马山县| 高淳县| 廉江市| 定结县| 临夏市| 景德镇市| 鹤庆县| 秀山| 阳春市| 蓬溪县| 大洼县| 淮安市| 龙南县| 永城市| 柳州市| 沁源县| 大丰市| 莲花县| 涟水县| 阿鲁科尔沁旗| 尉犁县| 南岸区| 宁国市| 钟祥市| 庆元县| 西青区| 普定县|