Number

二进制和八进制表示

ES6提供了二进制和八进制的心写法,分别用0b(0B)和0o(0O)

0b111===5 //true
0o10 ===8//true

要转成十进制,可以使用Number

Number.isFinite(), Number.isNaN(),Number.isInteger()

Number.isFinite()判断一个值是否是有限的

Number.isFinite(1) //true
Number.isFinite(Infinity) //false

Number.idNaN()判断一个值是否是NaN

Number.isNaN(NaN) // true
Number.isNaN(1)

Number.isInteger()判断一个值是否是整数.注意点:在JS内,整数和浮点数是同样的存储方法

Number.isInteger(25) //true
Number.isInteger(25.0) //true
Number.isInteger(25.1) //false
Number.parseInt(), Number.parseFloat()

ES6将全局的两个方法移植到了Number对象上,行为完全一致

Number.EPSILON

Number.EPSILON是ES6新增的一个极小的常量,目的在于设置一个误差范围,因为浮点数计算是不精确的.如果误差小于Number.EPSILON那么可以认为得到了正确的结果

安全整数和Number.isSafeInteger()

js能够准确表示的整数范围在-2^532^53之间,不含两个端点.超过范围会导致无法精确表示

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

ES6引入了两个常量,分别表示范围的上下线Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER

Number.isSafeInteger() 用来判断一个数是否在安全范围内

Math对象的拓展

ES6在Math对象上新增了17个与数学相关的方法,且都是静态,只能在Math对象上调用

  • Math.trunc() 用于去除一个数的小数部分,返回整数部分,对于非数值,会默认转化为数值,对无法取整的返回NaN

  • Math.sign()判断一个数是整数负数还是0 五个返回值,分别是 +1 -1 0 -0 NaN,对应正数,负数,0,-0,其他值

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

  • Math.clz32()返回一个数的32位无符号整数形式有多少个前导0 <<左移运算符与之直接相关

  • Math.imul()返回两个数以32位带符号整数形式相乘的结果,返回也是32位带符号整数,大多数情况下,Math.imul(a,b)a*b结果相同.但是因为js有精度限制,超过2的53次方无法精确表示.所以对于大位数的乘法,低位数往往是不正确的,Math.imul方法可以返回正确的低位数值

  • Math.fround()返回一个数的单精度浮点数形式

  • Math.hypot() 返回所有参数的平方和的平方根

对数方法
  • Math.expm1(x) 返回ex - 1,即Math.exp(x)-1

  • Math.log1p(x) 返回1+x的自然对数

  • Math.log10(x) 返回以10为底的X的对数

  • Math.log2(x) 返回以2为底的X的对数

三角函数方法

6个三角函数方法

  • Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)
  • Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
  • Math.tanh(x)返回x的双曲正切(hyperbolic tangent)
  • Math.asinh(x)返回x的反双曲正弦(inverse hyperbolic sine)
  • Math.acosh(x)返回x的反双曲余弦(inverse hyperbolic -cosine)
  • Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)
指数运算符

新的运算符**

2**2 //4
2**4 //16

需要注意的是,在V8引擎中,指数运算符和Math.pow的实现不太相同,对于特别大的结果会有细微的差异

你可能感兴趣的:(Number)