亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript 浮點運算精度問題分析與解決

2019-11-20 20:54:18
字體:
來源:轉載
供稿:網友

分析

JavaScript 只有一種數字類型 Number ,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。 浮點數的精度問題不是JavaScript特有的,因為有些小數以二進制表示位數是無窮的:

十進制           二進制
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 ,其程序實際上無法真正的表示 ‘1.1',而只能做到一定程度上的準確,這是無法避免的精度丟失:

1.09999999999999999

在JavaScript中問題還要復雜些,這里只給一些在Chrome中測試數據:

 輸入               輸出
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

解決

那如何來避免這類 1.0-0.9 != 0.1 的非bug型問題發生呢?下面給出一種目前用的比較多的解決方案, 在判斷浮點運算結果前對計算結果進行精度縮小,因為在精度縮小的過程總會自動四舍五入:

復制代碼 代碼如下:

(1.0-0.9).toFixed(digits)                   // toFixed() 精度參數須在 0 與20 之間
parseFloat((1.0-0.9).toFixed(10)) === 0.1   // 結果為True
parseFloat((1.0-0.8).toFixed(10)) === 0.2   // 結果為True
parseFloat((1.0-0.7).toFixed(10)) === 0.3   // 結果為True
parseFloat((11.0-11.8).toFixed(10)) === -0.8   // 結果為True

方法提煉
復制代碼 代碼如下:

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

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

// 原生擴展方式,更喜歡面向對象的風格
Number.prototype.isEqual = function(number, digits){
 digits = digits == undefined? 10: digits; // 默認精度為10
 return this.toFixed(digits) === number.toFixed(digits);
}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久国产精品91久久性色| 亚洲最大av网站| 欧美激情aaaa| 国产成人jvid在线播放| 青草热久免费精品视频| 91精品91久久久久久| 成人免费黄色网| 日韩美女免费视频| 91久久久久久久久久| 久久视频这里只有精品| 国产精品日韩精品| 日韩高清人体午夜| 九九久久久久99精品| 精品香蕉在线观看视频一| 欧洲亚洲女同hd| 91成人福利在线| 在线日韩精品视频| 中文字幕精品久久| 国产精品爱久久久久久久| 久久综合久久美利坚合众国| 神马久久桃色视频| 久久久久久久久91| 精品国产一区二区三区久久| 欧美一级免费看| 欧美日韩亚洲高清| 欧美黑人xxxⅹ高潮交| 欧美午夜宅男影院在线观看| 7m精品福利视频导航| 国产91亚洲精品| 欧美性猛交xxxx富婆| 亚洲国产中文字幕在线观看| 久久久国产精品x99av| 国产日韩精品电影| 国产精品欧美日韩久久| 91在线直播亚洲| 亚洲国产小视频| 欧美亚洲成人网| 国产一区二区三区日韩欧美| 国产精品白嫩初高中害羞小美女| 久久全球大尺度高清视频| 国产日韩欧美在线看| 国产三级精品网站| 都市激情亚洲色图| 97视频在线播放| …久久精品99久久香蕉国产| 久久久久国产精品免费| 久久久亚洲欧洲日产国码aⅴ| 午夜精品蜜臀一区二区三区免费| 日韩国产中文字幕| 欧美日韩国产中文字幕| 欧美寡妇偷汉性猛交| 国产午夜精品麻豆| 日韩精品免费电影| 欧美精品免费在线| 国产日韩在线播放| 亚洲一二三在线| 久久人人97超碰精品888| 最近2019中文字幕第三页视频| 国产一区二区激情| 青青青国产精品一区二区| www.欧美精品| 日韩欧美极品在线观看| 国产欧美日韩免费| 懂色av中文一区二区三区天美| 欧美成人免费网| 欧美高清无遮挡| 亚洲欧美成人精品| 欧美激情精品久久久久久蜜臀| 97在线视频国产| 伊人伊成久久人综合网小说| 欧美在线免费看| 日韩电视剧免费观看网站| 亚洲在线视频观看| 日韩高清av一区二区三区| 亚洲精品aⅴ中文字幕乱码| 国产精品成人免费电影| 亚洲国产精品一区二区三区| 欧美国产日本在线| 国产视频精品一区二区三区| 国内精品在线一区| 欧美成人免费视频| 日韩电视剧免费观看网站| 久久中文久久字幕| 成人午夜激情网| 日韩电影大片中文字幕| 中文字幕亚洲欧美一区二区三区| 国内精品模特av私拍在线观看| 亚洲免费一在线| 亚洲自拍欧美色图| 欧美激情精品久久久久久变态| 日产日韩在线亚洲欧美| 91九色蝌蚪国产| 国产精品丝袜高跟| 久久精品夜夜夜夜夜久久| 91精品国产高清自在线| 久久久久久久久久久av| 欧美激情一级精品国产| 国产精品久久一区主播| 亚洲第一黄色网| 欧美午夜激情小视频| y97精品国产97久久久久久| 亚洲xxx大片| 日韩h在线观看| 综合国产在线观看| 91av在线网站| 日韩av大片免费看| 欧美国产日产韩国视频| 久久99精品久久久久久青青91| 91在线观看免费高清完整版在线观看| 久久久国产精彩视频美女艺术照福利| 日韩精品在线观| 乱亲女秽乱长久久久| 国产成人自拍视频在线观看| 51视频国产精品一区二区| 国产午夜精品麻豆| 欧美性猛交xxxx乱大交蜜桃| 国产亚洲精品久久久久久| 日韩中文理论片| 亚洲最大中文字幕| 久久久久久国产免费| 日韩av免费一区| 黄色精品一区二区| 成人欧美在线视频| 九九久久精品一区| 国产欧美一区二区三区久久| 久久久久中文字幕| 欧美中文在线观看| 中文字幕免费精品一区高清| 欧美一级电影免费在线观看| 欧美日韩免费看| 欧美日韩福利电影| 亚洲的天堂在线中文字幕| 国产成人亚洲精品| 伊人伊人伊人久久| 亚洲日本中文字幕| 亚洲999一在线观看www| 久久精品99久久久香蕉| 国语对白做受69| 欧美激情视频一区二区三区不卡| 久久精品99无色码中文字幕| 成人免费看片视频| 91成品人片a无限观看| 深夜福利91大全| 日韩毛片中文字幕| 成人www视频在线观看| 91午夜在线播放| 日韩激情在线视频| 2019中文在线观看| 日韩中文av在线| 日韩欧美一区二区三区久久| 这里只有视频精品| 欧美午夜精品在线| 国产香蕉97碰碰久久人人| 亚洲无限乱码一二三四麻| 亚洲乱码国产乱码精品精天堂| 国产精品成人一区二区三区吃奶| 久久成人18免费网站| 久久久国产精品免费| 亚洲天堂2020| 久久久久久久一| 久久久久久久久国产| 国产精品免费久久久久影院| 欧美日韩综合视频| 亚洲欧美在线磁力|