美文网首页
数值的拓展

数值的拓展

作者: keknei | 来源:发表于2017-07-08 23:59 被阅读7次

    新增Number.isFinite() Number.isNaN()两个方法

    Number.isFinite()用来检验是不是数值类型,是返回true 不是返回false

    {
       console.log(Number.isFinite(4));//true
       console.log(Number.isFinite('5'));//false
       console.log(Number.isFinite(NaN));//false
       console.log(Number.isFinite(undefined));//false
       console.log(Number.isFinite(-3));//true
       console.log(Number.isFinite(8.9))//true
       console.log(Number.isFinite(function (){}));//false
       console.log(Number.isFinite(true));//false
       console.log(Number.isFinite(null));//false
       console.log(isFinite('5'));//true
    }
    

    需要注意的是isFinite('5')返回的是true,而Number.isFinite('5')返回的是false

    Number.isNaN()用来检验是不是NaN,是返回true 不是返回false

    {
       console.log(Number.isNaN(NaN));//true
       console.log(Number.isNaN(9/NaN));//true
       console.log(Number.isNaN('NaN'));//false
       console.log(Number.isNaN('3'/'5'));//false
       console.log(Number.isNaN('false'/'true'));//true
       console.log(isNaN('NaN'));//true
    }
    

    需要注意的是isNaN('NaN')返回的是true,而Number.isNaN('NaN')返回的是false

    Number.parseInt() Number.parseFloat()

    es6把parseInt()和parseFloat()放到了Number上,就是为了逐步减少全局性方法,使得语言逐步模块化。

    {
        console.log(Number.parseInt('12'));//12
        console.log(Number.parseInt('12.33'));//12
        console.log(Number.parseInt('12Afsjflk'))//12
        console.log(Number.parseInt('sdf32'))//NaN
        console.log(Number.parseFloat('12.4'));//12.4
        console.log(Number.parseFloat('12'))//12
        console.log(Number.parseFloat('12dfgdfg'));//12
        console.log(Number.parseFloat('12.23dffg'));//12.23
        console.log(Number.parseFloat('sdfsdf12.32'));//NaN
    }
    

    Number.parseInt() Number.parseFloat()行为与原来的保持不变

    Number.isInteger()

    Number.isInteger() 用来判断一个值是否为整数、

    {
        console.log(Number.isInteger(12));//true
        console.log(Number.isInteger(23.2));//false
        console.log(Number.isInteger(12.0))//true
        console.log(Number.isInteger('12'));//false    
    }
    

    在 JavaScript 内部,整数和浮点数是同样的储存方法,所以12和12.0被视为同一个值。

    Math.trunc()

    Math对象的拓展中trunc()用于去除一个数的小数部分返回整数部分

    {
        console.log(Math.trunc(12.4));//12
        console.log(Math.trunc(12.9));//12
        console.log(Math.trunc('12.4'));//12
        console.log(Math.trunc(-4));//-4
        console.log(Math.trunc(-4.7));//-4
        console.log(Math.trunc('-12.8'));//-12
        console.log(Math.trunc('3.7asd'));//NaN
        console.log(Number.parseInt(-12.8))//-12
        console.log(Number.parseInt('12.89sdsd'))//12
    }
    

    在没有Math,trunc()以前,都是用parseInt()方法将小数转换成整数,很显然 还是parseInt强大

    Math.sign()

    Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。

    {
       console.log(Math.sign(5));//+1
       console.log(Math.sign(-5));//-1
       console.log(Math.sign(0));//0
       console.log(Math.sign(-0));//-0
       console.log(Math.sign('9'));//+1
       console.log(Math.sign('dasdf'));//NaN    
    }
    

    参数为正数,返回+1;参数为负数,返回-1;参数为0,返回0;参数为-0,返回-0;其他值,返回NaN。

    指数运算符(**)

    es6新增了一个指数运算符(**),和 Math.pow()功能一样

    {
       let a=3;
       a=a**3;
       console.log(a);//27
    
       let b=2;
       b**=3;//b=b**3
       console.log(b);//8
    
       console.log(99**99);//3.697296376497268e+197
       console.log(Math.pow(99,99));//3.697296376497263e+197
    }
    

    指数运算符与Math.pow的实现不相同,对于特别大的运算结果,两者会有细微的差异。
    </br>
    万年不变的国际惯例:
    关于数值的拓展,就介绍这些了,如果想看更加详细的资料请狠狠的点击这里~
    </br>
    </br>

    相关文章

      网友评论

          本文标题:数值的拓展

          本文链接:https://www.haomeiwen.com/subject/deajhxtx.html