ECMAScript6官方文檔學習筆記(四)----數值的擴展

二進制和八進制表示法

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章