6.1二进制和八进制的表示法
ES6提供了二进制和八进制的新写法,分别前缀用0b(0B)和0o(0O)表示。
ES5开始,在严格模式中,八进制的数值就不再允许使用前缀0表示,ES6进一步确定,要使用前缀0o表示。
//非严格模式
(function(){
console.log(0o11===011)
})()//true
严格模式
(function(){
console.log(0o11===011)
})()//语法错误
如果要将使用0b和ox前缀的字符串数值转为10进制数值,要使用Number的方法。
Number('0o10')//8
6.2Number.isFinite()/Number.isNaN()
Number.isfinite()用来检查一个数值是否为有限的(finite)
Number.isNaN()是用来检查一个值是否为NaN。
6.3Number.parselnt()、Number.parseFloat()
ES6直接将parselnt和parseFloat方法移植到Number对象上。行为完全不变。
es5
parseint('12.34')//12
parseFloat('123.45#')//123.45
es6
Number.parseint('12.34')//12
Number.parseFloat('123.45#')//123.45
两者完全一样
6.4Number.islnteger()
Number.islnteger()是用来判断一个值是否为整数,在js中,浮点数和整数是同样的存储方法,3和3.0视为同一个值。
返回值是true和false。
6.5Number.EPSILON
是一个极小的常量,2.2204460e-16
引入他是为了为浮点数设置一个误差范围,浮点数的就算是不精确的。
如果过这个误差能够小于这个常量,我们就可以认为得到了正确的结果。与之进行对比一个数值。
6.6安全整数和Number.isSafelnteger()
js能够准确地表示的整数范围在-2的53方到2的53次方,不含两个端点,超出这个范围就是无效的。
Math.pow(2,53)//表示2的53次方。
ES6引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER
6.7Math对象的扩展
ES6在Math对象上新增了17个与数学有关的方法。这些方法都是静态方法,只能在Mat好、
对象上调用。
6.7.1Math.trunc()
用于去除一个数的小数部分。返回整数部分。
对于非数值,其内部使用Number方法将其先转为数值
对于空值和无法截取整数的值,返回NaN。
6.7.2Math.sign()
用来判断一个数到底是正数、负数还是零,对于非数值,则将其先转化为数值。
返回值有五种情况:
参数为正数,返回+1;
参数为负数,返回-1;
参数为0,返回0;
参数为-0,返回-0;
其他值,返回NaN;
6.7.3Math.cbrt()
用于计算一个数的立方根。
对于非数值,内部方法将其先使用Number方法转化为数值。
6.7.4Math.clz32()
计算的整数使用的是32位二进制的形式表示,、
6.7.5Math.imul()
有两个参数,返回的是两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。
6.7.6Math.fround()
返回的是一个数的单精度浮点数形式。
对于整数而言,其方法返回的结果没有不同,如果是小数的话,就会不同。返回的是最接近这个小数的单精度的浮点数。
6.7.7Math.hypot()
返回所有参数的平方和的开平方。
可以有多个参数,如果参数不是数值,则会现将其转化为数值,如果其中有一个不呢能转为数值,就会返回NaN
6.7.8对数方法
新增4个对数的方法
1.Math.expm1()
返回的是e的次方-1,即Math.exp(x)-1.
2.Math.log1p()
Math.log1p(x)返回的是ln(1+x),是就是Math.log(1+x);
3.Math.log10()
Math.log10(x)返回的是以10为底的x的对数。如果x小于0,返回NaN。
4.Math.log2()
Math.log2(x)返回的是以2为底的x的对数,如果x小于0,则返回NaN。
6.7.9双曲函数方法
6.8Math.signbit()
用来判断一个值的正负,但如果参数是-0,他也会返回-0.
6.9指数运算符
**
就是两个星号
指数运算符可以跟等号在一起,形成一个新的赋值运算符(**=)
a**=2;
等价于a=a*a;
a**=3;
等价于
a=a*a*a;
指数运算符与Math.pow的实现不相同,对于特别大的运算结果,两者会有细微的差异。