es6之数值的扩展

es6之数值的扩展

1.二进制和八进制

es6提供前缀表示二进制和八进制

0b111110111 === 503  //true  二进制前面加上0b
0o767 === 503       // 八进制
Number('0o767')  // 转化为十进制

2.Number.isFinite()和Number.isNaN()方法

Number.isFinite()检查一个数值是否是有限的

    console.log(Number.isFinite(123))  //  true
    console.log(Number.isFinite('123'))  // false
    console.log(Number.isFinite(Infinity))  // false

事实证明,除了数字之外的一切变量返回值都是false,包括字符串,true,false…
同时,如果要基于es5,则是通过typeof判断类型是否是Number和wndow.isFinite()

Number.isNaN()一个数值是否是NaN

    console.log(Number.isNaN(NaN))   //  true
    console.log(Number.isNaN(true)) // false
    console.log(Number.isNaN("123"))  // false
    console.log(Number.isNaN(123))  // false

如果要基于es5,则是通过typeof判断类型是否是Number和wndow.isNaN()

3.Number.parseInt(),Number.parseFloat()方法

es6将parseInt()和parseFloat()移植到了Number下面,使语言更加模块化

    console.log(parseInt('12.34'))   // 12
    console.log(parseFloat('12.345#'))  // 12.345
    console.log(Number.parseInt('12.34'))  // 12 
    console.log(Number.parseFloat('12.345#')) // 12.345

4.Number.isInteger()方法

用于判断一个变量是否是整数,在JavaScript整数和浮点数以同样的方法存储,所以3和3.0是同一个值

    console.log(Number.isInteger(10)) //  true
    console.log(Number.isInteger(10.0)) //  true
    console.log(Number.isInteger('10.1213')) // false
    console.log(Number.isInteger(true)) // false

5.Number.EPSILON

在Number中引入的一个极小微量,总所周知,JavaScript中浮点小数运算是不准确的,用于检测误差
通常我们认为,误差值小于Number.EPSILON,我们则认为得到了正确结果.

    console.log(Number.EPSILON)  //  2.220446049250313e-16
    console.log(Number.EPSILON.toFixed(20))  //  0.00000000000000022204 取小数点后20位
    console.log(0.1 + 0.2)  //  0.30000000000000004 浮点运算是不准确的
    (0.1 + 0.2 - 0.3)<Number.EPSILON  判断是true还是false

6.安全整数和Number.isSafeInteger()

总所周知,javascript的整数范围是2的53次方到-2的53次方,超出范围就就不精准了

console.log(Math.pow(2, 53) === (Math.pow(2, 53) + 1)) // true

ES6 提供了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER来表示数值的上限和下限
同时,提供isSafeInteger方法,用于检测是否在这个范围

    console.log(Number.isSafeInteger(111)) //  true
    console.log(Number.isSafeInteger('aaa')) // false
    console.log(Number.isSafeInteger(Math.pow(2, 53) + 1)) // false

但是isSafeInteger这个方法是又有局限性的,如果传入的是一个表达式,并且,表达式中的值不是安全整数,会出现问题,因为,当我们用isSafeInteger这个方法时,应该验证每一个值

7.math 对象的扩展

Math.trunc()方法用于去除一个数的小数部分,如果非数值,则先转化为数值

console.log(Math.trunc(3.5))  // 3

Math.sign()判断一个数是整数,负数,还是0,返回值是1,-1,0,-0,NaN

    console.log(Math.sign(3))  // 1
    console.log(Math.sign(-3)) // -1

Math.cbrt() 用于计算一个数的立方根

console.log(Math.cbrt(8)) // 2

除此之外,还有平方根计算,对数,双曲函数等等,不介绍了

8.指数运算法

和Math.pow(2,2)方法有些类似

2**2  // 4
2**3 // 8

猜你喜欢

转载自blog.csdn.net/qq_37339364/article/details/82592274