日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

ES6 Number 數(shù)值的擴展 0.1 + 0.2 === 0.3 居然是false

作者:Liky° 更新時間: 2021-12-20 編程語言

今天發(fā)現(xiàn)0.1 + 0.2 === 0.3 竟然是false

原來是精度的問題 下面是筆記 有興趣的可以看一下

    // 0.Number.EPSILON 是javaScript 的最小精度
    // EPSILON的值接近于2.220446049250313e-16
    console.log(0.1 + 0.2) // 0.30000000000000004 
    console.log(0.1 + 0.2 === 0.3) // false
    // 這個當然是不符合我們常規(guī)認識的 但是我們可以借助Number.EPSILON解決
    console.log(Number.EPSILON) // 2.220446049250313e-16
    console.log(Math.abs(0.1+0.2-0.3) < Number.EPSILON) // true
    // 聲明函數(shù)判斷兩個數(shù)值是否相等
    function calculation(a, b) {
      if (Math.abs(a-b) < Number.EPSILON) {
        return '相等'
      } else {
        return '不相等'
      }
    }
    console.log(calculation(0.1 + 0.2, 0.3)) // 相等
    // 1. Number.isFinite 檢測一個數(shù)值是否是有限數(shù)
    console.log(Number.isFinite(100)) // 有限 true
    console.log(100/0) // Infinity
    console.log(Number.isFinite(100/0)) // 無限 false
    console.log(Number.isFinite(Infinity)) // 無限 false
    // 2. NUmber.isNaN 檢測這個數(shù)值是否是NaN
    console.log(Number.isNaN(123)) // false
    // 3. Number.parseInt Number.parseFloat 字符串轉(zhuǎn)換為整數(shù)
    console.log(Number.parseInt('787878.8884pppppp')) // 787878
    console.log(Number.parseFloat('8.888888八八八')) // 8.888888
    // 4. Number.isInterger 判斷數(shù)字是否是整數(shù)
    console.log(Number.isInteger(2)) // true
    console.log(Number.isInteger(2.5)) // false
    // 5. Math.trunc 將小數(shù)部分抹除
    console.log(Math.trunc(23.999999999)) // 23
    console.log(Math.trunc(23.000000001)) // 23
    // 6. Math.sign 判斷一個數(shù)字是正數(shù) 負數(shù) 還是0
    console.log(Math.sign(100)) // 1
    console.log(Math.sign(0)) // 0
    console.log(Math.sign(-100)) // -1

原文鏈接:https://blog.csdn.net/sanhangzhongwen/article/details/122128039

欄目分類
最近更新