数值的拓展

新增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的实现不相同,对于特别大的运算结果,两者会有细微的差异。


万年不变的国际惯例:
关于数值的拓展,就介绍这些了,如果想看更加详细的资料请狠狠的点击这里~



你可能感兴趣的:(数值的拓展)