第六章 数值的扩展

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,201评论 0 13
  • 6.1 二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(0B)和0o(或0o)表...
    __越过山丘__阅读 211评论 0 0
  • 所有内容基于阮一峰的ECMAScript 6 入门 1.二进制和八进制表示法 ES6提供了二进制和八进制数值的新的...
    我才不是稻草人阅读 327评论 0 0
  • if someone wants to take advantage of you,i will put m...
    无与伦比呀阅读 195评论 0 0
  • 上一篇的作业时逢年末,适合总结2017,今天的作业是本年度第一篇作业,我觉得我应该郑重的把我2018年的目标列出来...
    Limi微阅读 493评论 1 3