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

今天发现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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值