你可能會錯過的ES6數字和數學功能

Photo by Michael Van Kerckhove on Unsplash

ES6引入了各類數學和數字方法以及屬性。在本文中,咱們將介紹一些咱們可能錯過的有用的 NumberMath 屬性。javascript

新 Number 屬性

Number 對象具備咱們能夠使用的新屬性和方法。前端

Number.EPSILON

Number.EPSILON 屬性用於比較浮點數是否在四捨五入偏差的公差值內。它是一個只讀屬性。java

它表示1與大於1的最小浮點數之間的差。git

例如,咱們能夠編寫如下代碼來使用它:es6

const result = Math.abs(0.3 - 0.4 + 0.1);
console.log(result); // 2.7755575615628914e-17
console.log(result < Number.EPSILON); // true

0.3 - 0.4 + 0.1 應該爲 0 ,可是因爲JavaScript對浮點值的處理,結果爲 2.7755575615628914e-17安全

使用 Number.EPSILON,咱們能夠檢查 result 是不是如此之小,以致於像在最後一行中那樣接近0。函數

Number.isInteger(num)

Number.isInteger 檢查給定的 num 是否爲整數。例如,咱們能夠按如下方式使用它:spa

Number.isInteger(2.05); // false
Number.isInteger(2); // true

Number.isSafeInteger(number)

還有 isSafeInteger 方法來檢查JavaScript整數是否在JavaScript能夠接受的範圍內。該範圍由Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER 的值表示。翻譯

Number.MIN_SAFE_INTEGER 爲-9007199254740991,Number.MAX_SAFE_INTEGER 爲9007199254740991。code

Number.isNaN(num)

Number.isNaN 檢查 num 是否爲NaN。與全局 isNaN() 函數不一樣,此方法不將其參數強制爲數字。所以,對於非數字使用它是安全的。

例如,isNaN('abc') 返回 true,而 Number.isNaN('abc') 返回 false。所以,它其實是在檢查 num 是否真的是 NaN,而不是將值強制爲一個數字,並檢查強制值是不是 NaN

Number.parseInt(num, radix)

Number.parseInt 與全局 parseInt 函數具備相同的做用。它使用要轉換的數字字符串和基數(即數字將被轉換爲基數的基數)做爲第二個參數。

例如,咱們能夠編寫如下代碼來作到這一點:

Number.parseInt('11', 8); // 9

上面的代碼返回9,由於咱們經過將8做爲第二個參數傳入來假設字符串是八進制數。

Number.parseInt 對八進制或二進制數字文字沒有特殊支持。例如:

Number.parseInt('0o11', 8); // 0

可是,它確實支持將十六進制文字轉換爲數字。例如,Number.parseInt('0xF') 返回15。所以它知道咱們傳入的是十六進制數字。

新 Math 方法

Math 對象具備用於數字,三角和按位運算的新方法。

Math.sign(num)

sign方法返回數字的符號。若是咱們有一個負數,則返回-1,若是數字爲0,則返回0。不然,返回1。

例如,Math.sign(-2) 返回-1,Math.sign(0) 返回0,Math.sign(6) 返回1。

Math.trunc(num)

Math.trunc 刪除數字的小數部分並返回它。

例如,Math.trunc(2.1) 返回2,Math.trunc(-2.1) 返回-2,Math.trunc(2.9) 返回2。

Math.log10(num)

log10 方法計算 num 的以10爲底的對數。例如,Math.log10(1000) 是3。

Math.hypot(x, y)

hypot 計算三角形的下折線的長度,給定橫邊和豎邊的長度分別爲 xy

例如,Math.hypot(4, 3) 是5。

新整數字面量

ES6增長了對二進制和八進制文字的支持。要寫一個二進制數字,咱們給數字加上 0b 前綴,而後寫二進制數字。

例如,咱們能夠把二進制值3寫成 0b11

八進制數字以 0o 爲前綴。例如,0o11 是9。

toString 方法須要一個 radix 參數,它能夠將一個數字轉換爲咱們想要的基數並返回爲字符串。

例如 (9).toString(8) 是11。

總結

ES6爲 NumberMath 對象引入了許多屬性和方法。此外,咱們還有新型的數字面量。如今支持二進制和八進制數。

此外,Number 對象如今具備 parseIntisInteger 方法。咱們還能夠使用 Number.EPLISON 屬性檢查某個值是否足夠接近0,這是一個很是小的數字。

Number 還具備 isNaNisSafeInteger 方法來檢查 NaN 而不進行轉換,還有 isSafeInteger 方法來檢查整數是否在JavaScript能夠接受的範圍內。

Math方法包括使用 sign 方法獲取數字的符號,使用 trunc 截斷數字以及使用 log10 獲取以10爲底的對數。


來源:https://levelup.gitconnected.com,做者:John Au-Yeung,翻譯:公衆號《前端全棧開發者》

相關文章
相關標籤/搜索