学无先后,达者为师

网站首页 编程语言 正文

ES6 Number 数值的扩展 0.1 + 0.2 === 0.3 居然是false

作者:Liky° 更新时间: 2021-12-20 编程语言

今天发现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
    // 这个当然是不符合我们常规认识的 但是我们可以借助Number.EPSILON解决
    console.log(Number.EPSILON) // 2.220446049250313e-16
    console.log(Math.abs(0.1+0.2-0.3) < Number.EPSILON) // true
    // 声明函数判断两个数值是否相等
    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 检测一个数值是否是有限数
    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 检测这个数值是否是NaN
    console.log(Number.isNaN(123)) // false
    // 3. Number.parseInt Number.parseFloat 字符串转换为整数
    console.log(Number.parseInt('787878.8884pppppp')) // 787878
    console.log(Number.parseFloat('8.888888八八八')) // 8.888888
    // 4. Number.isInterger 判断数字是否是整数
    console.log(Number.isInteger(2)) // true
    console.log(Number.isInteger(2.5)) // false
    // 5. Math.trunc 将小数部分抹除
    console.log(Math.trunc(23.999999999)) // 23
    console.log(Math.trunc(23.000000001)) // 23
    // 6. Math.sign 判断一个数字是正数 负数 还是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

栏目分类
最近更新