二进制和八进制表示
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^53
到2^53
之间,不含两个端点.超过范围会导致无法精确表示
Math.pow(2, 53) === Math.pow(2, 53) + 1 // true
ES6引入了两个常量,分别表示范围的上下线Number.MAX_SAFE_INTEGER
和Number.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
的实现不太相同,对于特别大的结果会有细微的差异
网友评论