学习笔记 JavaScript ES6 数值的扩展

学习内容:

  • 二进制 0B
  • 八进制 0O
  • Number.isFinite()
  • Number.isNaN()
  • Number.parseInt()
  • Number.parseFloat()
  • Number.isInteger()
  • 0.1 + 0.2 === 0.3 ?
  • Math新增方法

ES5把十进制转为二进制

let i = 5
console.log(i.toString(2))

----
101

ES5把二进制转为十进制

let k = 101
console.log(parseInt(k, 2))

-----
5

ES6当中,0B表示二进制,0O表示八进制,字母大小写都可以

const a = 0B0101
console.log(a)

const b = 0O777
console.log(b)

--------
5
511

Number.isFinite()

判断是否是有限的

console.log(Number.isFinite(5)) // true
console.log(Number.isFinite(5/0)) // false
console.log(Number.isFinite(Infinity)) // false
console.log(Number.isFinite(true)) // false
console.log(Number.isFinite('test')) // false

Number.isNaN()

// NaN:not a number
console.log(Number.isNaN(NaN)) // true
console.log(Number.isNaN(10)) // false

Number.parseInt()、Number.parseFloat()

ES6中把window对象下的全局方法逐步移到相应的对象下面了 

console.log(Number.parseInt(5.5)) // 5
console.log(Number.parseFloat(5.5)) // 5.5 
console.log(window.parseInt(5.5)) // 5
console.log(window.parseFloat(5.5)) //5.5

Number.isInteger() 

Number.isInteger(5) // true
Number.isInteger(5.5) // false

 

精度缺失的问题

ES里面,0.1+0.2 === 0.3 // false

let a = 0.1 + 0.2
console.log(a)

---------------------------
0.30000000000000004

首先,数字在计算机中是根据IEEE 754双精度标准存储的,简单理解存储一个数字需要的二进制的位数比较多,这样做的目的是存储数字更加的准确。

因为0.1变成二进制数值时无法被整除,

const a = 0.1
console.log(a.toString(2))

-----------------------------------------------------------
0.0001100110011001100110011001100110011001100110011001101
console.log(0.1000000000000001)
console.log(0.10000000000000001)
console.log(0.10000000000000001 === 0.1)

-----------------------
0.1000000000000001
0.1
true

ES6当中,整数的最大值是2的53次方

const max = Math.pow(2, 53)
console.log(max)
console.log(max + 1)

------------------------
9007199254740992
9007199254740992
const max = Math.pow(2, 53)
console.log(Number.MAX_SAFE_INTEGER)
console.log(Number.MAX_SAFE_INTEGER === max - 1)
console.log(Number.MIN_SAFE_INTEGER)

------------------------
9007199254740991
true
-9007199254740991

Math.trunc()

去除一个数的小数部分,返回整数部分

console.log(Math.trunc(5.5)) // 5
console.log(Math.trunc(-5.5)) // -5
console.log(Math.trunc(true)) // 1
console.log(Math.trunc(false)) // 0
console.log(Math.trunc(NaN)) // NaN

console.log(Number.parseInt(5.5)) // 5
console.log(Number.parseInt(-5.5)) // -5
console.log(Number.parseInt(true)) // NaN

Math.sign() 

判断正负数和零

console.log(Math.sign(5)) // -1
console.log(Math.sign(-5)) // 1
console.log(Math.sign(0)) // 0
console.log(Math.sign(NaN)) // NaN
console.log(Math.sign(true)) // 1
console.log(Math.sign(false)) // 0

Math.cbrt()

返回立方根 

console.log(Math.cbrt(8))
console.log(Math.cbrt('test'))

----
2
NaN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值