zoukankan      html  css  js  c++  java
  • es6基础系列二:Number

    es6中关于Number类型的变化,主要有以下几点

    Number.isInteger

    新增方法,判断是否为整数
    Number.isInteger(Infinity) // false
    Number.isInteger(-Infinity) // false
    Number.isInteger(NaN) // false
    Number.isInteger(null) // false
    Number.isInteger(0) // true
    Number.isInteger(-10) // true
    Number.isInteger(10.3) // false
    

    Number.EPSILON

    新增方法,判断是否可以忽略的误差
    0.1 + 0.2 // 0.30000000000000004
    0.1 + 0.2 === 0.3 // false
    // 这其中的误差可以忽略,可以通过下面的函数来判断误差是否可以忽略
    function withinErrorMargin (left, right) {
        return Math.abs(left - right) < Number.EPSILON
    }
    withinErrorMargin(0.1 + 0.2, 0.3) // true
    withinErrorMargin(0.2 + 0.2, 0.3) // false
    

    Number.MAX_SAFE_INTEGER

    新增方法,表示js可以安全和精确表示的最大整数,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的(253 - 1)
    Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1 // true
    Number.MAX_SAFE_INTEGER === 9007199254740991 // true
    

    Number.MIN_SAFE_INTEGER

    新增方法,表示js可以安全和精确表示的最小整数,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的-(253 - 1)
    Number.MIN_SAFE_INTEGER === -Number.MAX_SAFE_INTEGER // true
    Number.MIN_SAFE_INTEGER === -9007199254740991 // true
    

    Number.isSafeInteger

    新增方法,返回true或false,表示在js可以安全和精确表示的范围内,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的-(253 - 1)到(253 - 1),所谓安全就是如果超出这范围,计算的结果就很可能不正确。
    Number.isSafeInteger('a') // false
    Number.isSafeInteger(null) // false
    Number.isSafeInteger(NaN) // false
    Number.isSafeInteger(Infinity) // false
    Number.isSafeInteger(-Infinity) // false
    Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) // false
    Number.isSafeInteger(Number.MIN_SAFE_INTEGER) // true
    Number.isSafeInteger(1) // true
    Number.isSafeInteger(1.2) // false
    Number.isSafeInteger(Number.MAX_SAFE_INTEGER) // true
    Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) // false
    9007199254740993 - 9007199254740995 // -4 但真实结果应该为-2
    

    Number.isNaN

    类似es5的isNaN,判断是否NaN,返回true或false,但值为非数字时,跟es5的isNaN有区别,isNaN会先执行一次Number方法
    Number.isNaN(123) // false, integers are not NaN
    Number.isNaN(Infinity) // false, Infinity is not NaN
    Number.isNaN(NaN) // true, NaN is NaN
    Number.isNaN('pony'/'foo') // true, 'pony'/'foo' is NaN, NaN is NaN
    Number.isNaN('ponyfoo') // false, 'ponyfoo' is not NaN
    isNaN('ponyfoo') // true, because Number('ponyfoo') is NaN
    

    Number.isFinite

    类似es5的isFinite,判断是否有限数,返回true或false,但值为非数字时,跟es5的isNaN有区别,isFinite会先执行一次Number方法
    Number.isFinite(NaN) // false
    Number.isFinite(Infinity) // false
    Number.isFinite(-Infinity) // false
    Number.isFinite(null) // false
    Number.isFinite(0) // true
    Number.isFinite(3) // true
    Number.isFinite('10') // false
    Number.isFinite(Math.pow(2,53)+5) // true 大于js的安全整数
    isFinite(null) // true, because Number(null) is 0
    isFinite('10') // true, because Number('10') is 10
    

    Number.parseInt

    跟es5的parseInt完全一样,不再介绍
    Number.parseInt === parseInt // true
    

    Number.parseFloat

    跟es5的parseFloat完全一样,不再介绍
    Number.parseFloat === parseFloat // true
  • 相关阅读:
    排列组合STL实现——pku1731
    迷宫搜索变型——【USACO5.2.1】蜗牛的旅行
    知道地球两点算距离——fzu2016
    最长递增子序列——pku2533
    dfs+dp——[Usaco2008 Mar]Cow Travelling游荡的奶牛
    最长不降子序列变型——[Usaco2008 Feb]Eating Together麻烦的聚餐
    规律题——[Usaco2008 Oct]建造栅栏
    简单dp——[Usaco2008 Mar]River Crossing渡河问题
    poj1317
    poj1068
  • 原文地址:https://www.cnblogs.com/yanyuji/p/6699597.html
Copyright © 2011-2022 走看看