### 二進制和八進制表示法
ES6提供了二進制和八進制數值的新寫法,分別用前綴 `0b`(或`0B`)和`0o`(或`0O`)表示
```js
0b111110111 === 503 // true
0o767 === 503 // true
```
可以使用 `Number` 方法將使用 `0b` 和 `0x` 前綴的字符串數值轉換為十進制數值
```js
Number('0b111') // 7
Number('0o10') // 8
```
### Number.isFinite()、Number.isNaN()
ES6在Number對象上新增了 `Number.isFinite()` 和 `Number.isNaN()` 兩個方法。
`Number.isFinite()` 用來檢查一個數值是否為有限的。
```js
Number.isFinite(15) // true
Number.isFinite(0.8) // true
Number.isFinite(NaN) // false
Number.isFinite(Infinity) // false
```
`Number.isNaN()` 用來檢查一個值是否為 `NaN`
```js
Number.isNaN(NaN) // true
Number.isNaN(15) // false
```
### Number.parseInt()、Number.parseFloat()
ES6將全局方法 `parseInt()` 和 `parseFloat()` 移植到了 `Number` 對象上,行為完全保持不變。
```js
Number.parseInt('12.34') // 12
Number.parseFloat('12.45#') // 12.45
```
### Number.isInteger()
`Number.isInteger()`方法用來判斷一個值是否為整數。在JavaScript內部,整數和浮點數是同樣的存儲方法,所以 3 和 3.0 被視為同一個值
```js
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.1) // false
```
### Number.EPSILON
ES6在 `Number` 對象上新增了一個極小的常量 - `Number.EPSILON`,引入這么小的一個量,目的在于為浮點數計算設置一個誤差范圍,如果這個誤差范圍小于 `Number.EPSILON` ,那么我們就認為計算得到了正確的結果
```js
0.1 + 0.2 - 0.3 < Number.EPSILON // true
```
### 安全整數和 Number.isSafeInteger()
JavaScript能準確表示的整數范圍在 -2<sup>53</sup> ~ 2<sup>53</sup>之間,不包含兩個端點,超過則無法精確表示。
ES6引入了 `Number.MAX_SAFE_INTEGER` 和 `Number.MIN_SAFE_INTEGER` 兩個常量,用來表示這個范圍的上下限。
```js
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1 // true
```
`Number.isSafeInteger()` 則是用來判斷一個整數是否落在這個范圍之內。
### Math對象的擴展
ES6在 Math 對象上新增了17個與數學相關的方法,這些方法都是靜態方法,只能在Math對象上調用。
- `Math.trunc()`方法用于去除一個數的小數部分,返回整數部分。
- `Math.sing()`方法用來判斷一個數到底是正數、負數,還是零
- `Math.cbrt()`方法用于計算一個數的立方根
- `Math.clz32()`方法返回一個數的32位無符號整數形式有多少個前導0
- `Math.imul()`方法返回兩個數以32位帶符號整數形式相乘的結果
- `Math.fround()` 方法返回一個數的單精度浮點數形式
- `Math.hypot()` 方法返回所有參數的平方和的平方根
### 指數運算符
ES6新增了一個指數運算符 (**)
```js
2 ** 2 // 4
2 ** 3 // 8
```