第六章 数值的扩展

6.1 二进制和八进制表示法

ES6提供了二进制和八进制数值的新写法,分别用前缀0b和0o表示。

0b111110111 === 503 //true
0o767 === 503 //true

从ES5开始,在严格模式中,八进制数值就不再运行使用前缀0表示,ES6进一步明确,要使用前缀0x表示。

//非严格模式

(function() {
    console.log(0o11 === 011);
})() //true

//严格模式

(function() {
    'use strict'
    console.log(0o11 === 011);
})()

//Uncaught SntaxError

如果要使用0b和0x前缀的字符串数值转为十进制数值,要使用Number方法。

 

Number('0b111');  //7

Number('0o10'); 8 

6.2 Number.isFinite(),Number.isNaN()

ES6在Number对象上新提供了Number.isFinite()和Number.isNaN()两个方法。

Number.isFinite()用来检查一个数值是否为有限的。

Number.isFinite(15); //true
Number.isFinite(0.6); //true
Number.isFinite(NaN); //false
Number.isFinite(Infinity); //false
Number.isFinite(-Infinity); //false
Number.isFinite('foo'); //false


Number.isNaN()用来检查一个值是否为NaN。

Number.isNaN(NaN); //true
Number.isNaN(15); //false
Number.isNaN('15'); //false
Number.isNaN(9/NaN); //true
Number.isNaN('true'/0); //true

6.3 Number.parseInt(),Number.parseFloat()

ES6将全局方法parseInt()和parseFloat()移植到了Number对象上面,行为完全保持不变。

这样做的目的是逐步减少全局性方法,使得语言逐步模块化。

Number.parseInt === parseInt //true

Number.parseFloat === parseFloat //true

6.4 Number.isInteger()

Number.isInteger()用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的存储方法,所以3和3.0被视为同一个值。

Number.isInteger(25); //true
Number.isInteger(25.0); //true
Number.isInteger(25.1); //true

6.5 Number.EPSILON

ES6在Number对象上面新增了一个极小的常量—Number.EPSILON。

引入一个这么小的量,目的在于为浮点数计算设置一个误差范围。

function withinErrorMargin(left, right) {
    return Math.abs(left-right) < Number.EPSILON;
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值