ECMAScript6官方文档学习笔记(四)----数值的扩展

本文主要介绍了ES6中数值的扩展,包括二进制和八进制表示法、Number.isFinite()、Number.isNaN()、Number.parseInt()和parseFloat()、Number.isInteger()、Number.EPSILON以及Math对象的扩展方法,如Math.trunc()、Math.sign()、Math.cbrt()和Math.clz32()等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二进制和八进制表示法

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

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

从ES5开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6进一步明确,要使用前缀0o表示
如果要将0b和0a前缀的字符串数值转为十进制,要使用Number方法

Number('0b111')

Number.isFinite(),Number.isNaN()

Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity。
注意,如果参数类型不是数值,Number.isFinite一律返回false。

Number.isNaN()用来检查一个值是否为NaN。
如果参数类型不是NaN,Number.isNaN一律返回false。

Number.parseInt(), Number.parseFloat()

ES6将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变
这样做的目的是逐步减少全局方法,使得语言逐步模块化

Number.isInteger()

Number.isInteger()用来判断一个数值是否为整数注意:

Number.isInteger(25.0)//true

注意,由于 JavaScript 采用 IEEE 754 标准,数值存储为64位双精度格式,数值精度最多可以达到 53 个二进制位(1 个隐藏位与 52 个有效位)。如果数值的精度超过这个限度,第54位及后面的位就会被丢弃,这种情况下,Number.isInteger可能会误判。

Number.isInteger(3.0000000000000002) // true

类似的情况还有,如果一个数值的绝对值小于Number.MIN_VALUE(5E-324),即小于 JavaScript 能够分辨的最小值,会被自动转为 0。

Number.EPSILON

根据规格,它表示 1 与大于 1 的最小浮点数之间的差。

0.1 + 0.2
// 0.30000000000000004

0.1 + 0.2 - 0.3
// 5.551115123125783e-17

5.551115123125783e-17.toFixed(20)
// '0.00000000000000005551'
0.1 + 0.2 === 0.3 // false

上面代码解释了,为什么比较0.1+0.2与0.3得到的结果是false。
Number.EPSILON可以用来设置“能够接受的误差范围”。比如,误差范围设为 2 的-50 次方(即Number.EPSILON * Math.pow(2, 2)),即如果两个浮点数的差小于这个值,我们就认为这两个浮点数相等。

扩展方法

Math.trunc():Math.trunc方法用于去除一个数的小数部分,返回整数部分

Math.sign():用来判断一个数到底是正数,负数,还是零。对于非数值,会先将其转换为数值,它会返回五种值:
1.参数为正数,返回+1
2.参数为负数,返回-1
3.参数为0,返回0
4.参数为-0,返回-0
5.其他值,返回NaN

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

Math.clz32():将参数转为32位无符号整数的形式,然后返回这个32位值里面有多少个前导0

Math.log10():返回以10为底的x的对数。如果x小于0,则返回NaN。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值