二進制和八進制表示法
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。