欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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é)果為True
parseFloat((1.0-0.8).toFixed(10)) === 0.2   // 結(jié)果為True
parseFloat((1.0-0.7).toFixed(10)) === 0.3   // 結(jié)果為True
parseFloat((11.0-11.8).toFixed(10)) === -0.8   // 結(jié)果為True

方法提煉
復(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

  • JS+HTML5本地存儲(chǔ)Localstorage實(shí)現(xiàn)注冊(cè)登錄及驗(yàn)證功能示例

    JS+HTML5本地存儲(chǔ)Localstorage實(shí)現(xiàn)注冊(cè)登錄及驗(yàn)證功能示例

    這篇文章主要介紹了JS+HTML5本地存儲(chǔ)Localstorage實(shí)現(xiàn)注冊(cè)登錄及驗(yàn)證功能,結(jié)合實(shí)例形式分析了基于JS+HTML5本地存儲(chǔ)Localstorage實(shí)現(xiàn)注冊(cè)登錄及驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • JavaScript 在線壓縮和格式化收藏

    JavaScript 在線壓縮和格式化收藏

    國(guó)外人寫的在線壓縮和格式化工具這兩套程序都是用純 JavaScript 寫的,可以下載下來(lái)離線使用,很方便。
    2009-01-01
  • JS如何判斷對(duì)象是否包含某個(gè)屬性

    JS如何判斷對(duì)象是否包含某個(gè)屬性

    這篇文章主要介紹了JS如何判斷對(duì)象是否包含某個(gè)屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • jsonp跨域獲取百度聯(lián)想詞的方法分析

    jsonp跨域獲取百度聯(lián)想詞的方法分析

    這篇文章主要介紹了jsonp跨域獲取百度聯(lián)想詞的方法,結(jié)合實(shí)例形式分析了jsonp的原理及跨域獲取百度聯(lián)想詞的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 詳談js遍歷集合(Array,Map,Set)

    詳談js遍歷集合(Array,Map,Set)

    下面小編就為大家?guī)?lái)一篇詳談js遍歷集合(Array,Map,Set)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • JS?中的URLSearchParams?對(duì)象操作(以對(duì)象的形式上傳參數(shù)到url)

    JS?中的URLSearchParams?對(duì)象操作(以對(duì)象的形式上傳參數(shù)到url)

    這篇文章主要介紹了JS中URLSearchParams的基本用法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • JS判斷輸入字符串長(zhǎng)度實(shí)例代碼(漢字算兩個(gè)字符,字母數(shù)字算一個(gè))

    JS判斷輸入字符串長(zhǎng)度實(shí)例代碼(漢字算兩個(gè)字符,字母數(shù)字算一個(gè))

    下面小編就為大家?guī)?lái)一篇JS判斷輸入字符串長(zhǎng)度實(shí)例代碼(漢字算兩個(gè)字符,字母數(shù)字算一個(gè))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • ES6中的class是如何實(shí)現(xiàn)的(附Babel編譯的ES5代碼詳解)

    ES6中的class是如何實(shí)現(xiàn)的(附Babel編譯的ES5代碼詳解)

    這篇文章主要介紹了ES6中的class是如何實(shí)現(xiàn)的?(附Babel編譯的ES5代碼詳解),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 利用JavaScript實(shí)現(xiàn)靜態(tài)圖片局部流動(dòng)效果

    利用JavaScript實(shí)現(xiàn)靜態(tài)圖片局部流動(dòng)效果

    如果你有玩過(guò)《王者榮耀》、《陰陽(yáng)師》?等手游,一定注意到過(guò)它的啟動(dòng)動(dòng)畫(huà)、皮膚立繪卡片等場(chǎng)景,經(jīng)常采用靜態(tài)底圖加局部液態(tài)流動(dòng)效果的簡(jiǎn)單動(dòng)畫(huà),本文將利用JavaScript實(shí)現(xiàn)這一效果,需要的可以參考一下
    2022-08-08
  • 最新評(píng)論