<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 21:21:12
        文檔

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

        Javascript浮點運算精度問題分析與解決_javascript技巧:分析 JavaScript 只有一種數字類型 Number ,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。 浮點數的精度問題不是JavaScript特有的,因為有些小數以二進制表示位數是無窮的: 十進制 二進制0.1 0.0001 1001 1001 100
        推薦度:
        導讀Javascript浮點運算精度問題分析與解決_javascript技巧:分析 JavaScript 只有一種數字類型 Number ,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。 浮點數的精度問題不是JavaScript特有的,因為有些小數以二進制表示位數是無窮的: 十進制 二進制0.1 0.0001 1001 1001 100

        分析

        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

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        Javascript浮點運算精度問題分析與解決_javascript技巧:分析 JavaScript 只有一種數字類型 Number ,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。 浮點數的精度問題不是JavaScript特有的,因為有些小數以二進制表示位數是無窮的: 十進制 二進制0.1 0.0001 1001 1001 100
        推薦度:
        標簽: js 問題 問題處理
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产免费看插插插视频| 日韩免费a级毛片无码a∨| 亚洲国产精品嫩草影院久久 | 韩日电影在线播放免费版| 一级毛片直播亚洲| 免费A级毛片无码免费视| 亚洲一级毛片视频| 另类图片亚洲校园小说区| 国产成人免费a在线资源| 久久精品国产亚洲AV未满十八 | 中文在线观看国语高清免费| 中文字幕精品亚洲无线码二区 | 在线精品免费视频无码的| 亚洲一区二区三区成人网站| 一个人免费视频在线观看www| 中文字幕中韩乱码亚洲大片| 成人电影在线免费观看| 亚洲美女色在线欧洲美女| 国内精品乱码卡1卡2卡3免费| 亚洲AV无码专区在线电影成人 | 亚洲精品第一国产综合境外资源| 精品久久久久久无码免费| 亚洲av无码乱码国产精品fc2| 亚洲AV无码一区二区三区久久精品 | 免费无码黄网站在线看| 精品亚洲麻豆1区2区3区| 国产成人无码免费看视频软件| 亚洲AV无码国产一区二区三区| 国产亚洲视频在线播放| 精品久久8x国产免费观看| 亚洲AV无码国产精品永久一区| 亚洲精品无码永久中文字幕| 91香蕉成人免费网站| 亚洲尹人九九大色香蕉网站| 久久精品免费全国观看国产| 深夜免费在线视频| 久久精品国产亚洲av麻豆色欲| 国产伦精品一区二区三区免费迷| 午夜免费福利小电影| 国产成人高清亚洲一区91| 亚洲av色影在线|