1.二進制和八進制表示法
ES6 分別用 0b(0B) 和 0o(0O)表示二進制和八進制
使用Number方法嫡锌,將二虑稼、八進制轉換為十進制
Number('0b111') // 7
Number('0o10') // 8
2. Number.isFinite 和 Number.isNaN
isFinite 用來檢查一個數(shù)值是否有限
isNaN 判斷一個值是否 NaN
區(qū)別:這兩種方法在 ES6 中只對數(shù)值有效,除了對 isNaN()對 NaN返回 true势木, 其他的均返回false蛛倦;
3.Number.parseInt 和 Number.parseFloat
// ES5的寫法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45
// ES6的寫法
Number.parseInt('12.34') //12
Number.parseFloat('123.45#') // 123.45
4.Number.isInteger 判斷一個數(shù)值是否為整數(shù)
5.Number.EPSILON
Number.EPSILON實際上是 JavaScript 能夠表示的最小精度。誤差如果小于這個值啦桌,就可以認為已經沒有意義了溯壶,即不存在誤差了。
Number.EPSILON可以用來設置“能夠接受的誤差范圍”
6.安全整數(shù) Number.isSafeInteger()
JavaScript 能夠準確表示的整數(shù)范圍在-2^53到2^53之間(不含兩個端點)甫男,超過這個范圍且改,無法精確表示這個值。
ES6 引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER這兩個常量板驳,用來表示這個范圍的上下限又跛。
7. Math 對象的拓展
ES6 新增了17個靜態(tài)方法,只能在Math 對象上調用
7.1 Math.trunc() 去掉小數(shù)部分
對于非數(shù)值若治,Math.trunc內部使用Number方法將其先轉為數(shù)值慨蓝。
對于空值和無法截取整數(shù)的值感混,返回NaN。
7.2 Math.sign() 判斷正負數(shù)礼烈,對于一個非數(shù)值弧满,會將其先轉換為數(shù)值,返回五種值
參數(shù)為正數(shù)此熬,返回+1谱秽;
參數(shù)為負數(shù),返回-1摹迷;
參數(shù)為 0,返回0郊供;
參數(shù)為-0峡碉,返回-0;
其他值,返回NaN驮审。
對于無法轉換為數(shù)值的值鲫寄,就返回 NaN
7.3 Math.cbrt() 求立方根
7.5 Math.clz32() 32位二進制形式表示
Math.clz32(0) // 32 Math.clz32(1) // 31 Math.clz32(1000) // 22 Math.clz32(0b01000000000000000000000000000000) // 1 Math.clz32(0b00100000000000000000000000000000) // 2
clz32這個函數(shù)名就來自”count leading zero bits in 32-bit binary representation of a number“(計算一個數(shù)的 32 位二進制形式的前導 0 的個數(shù))的縮寫。
對于小數(shù)疯淫,只計算整數(shù)部分
7.6 Math.imul()?Math.imul方法返回兩個數(shù)以 32 位帶符號整數(shù)形式相乘的結果地来,返回的也是一個 32 位的帶符號整數(shù)。
7.7 Math.fround() 返回一個數(shù)的32位 單精度浮點數(shù)形式
7.8 Math.hypot() 返回所有參數(shù)的平方和的平方根熙掺;
7.9 對數(shù)相關
?????Math.expm1()??
Math.expm1(x)返回 ex?- 1未斑,即Math.exp(x) - 1。
? ? Math.log1p()
Math.log1p(x)方法返回1 + x的自然對數(shù)币绩,即Math.log(1 + x)蜡秽。如果x小于-1,返回NaN缆镣。
? ? Math.log10()
Math.log10(x)返回以 10 為底的x的對數(shù)芽突。如果x小于 0,則返回 NaN董瞻。
? ? Math.log2()
Math.log2(x) 返回以 2 為底的x的對數(shù)寞蚌,如果 x 小于0,則返回 NaN钠糊。
7.10 雙曲函數(shù)方法
ES6 新增了 6 個雙曲函數(shù)方法挟秤。
Math.sinh(x)?返回x的雙曲正弦(hyperbolic sine)
Math.cosh(x)?返回x的雙曲余弦(hyperbolic cosine)
Math.tanh(x)?返回x的雙曲正切(hyperbolic tangent)
Math.asinh(x)?返回x的反雙曲正弦(inverse hyperbolic sine)
Math.acosh(x)?返回x的反雙曲余弦(inverse hyperbolic cosine)
Math.atanh(x)?返回x的反雙曲正切(inverse hyperbolic tangent)
7。11 Math.signbit()
Math.sign()用來判斷一個值的正負眠蚂,但是如果參數(shù)是-0煞聪,它會返回-0。
如果參數(shù)是NaN逝慧,返回false
如果參數(shù)是-0昔脯,返回true
如果參數(shù)是負值啄糙,返回true
其他情況返回false
8.指數(shù)運算符(**)
2 ** 2 // 4
2 ** 3 // 8
let a = 1.5;
a **= 2; // 等同于 a = a * a;
let b = 4;
b **= 3; // 等同于 b = b * b * b;
9.Integer 數(shù)據(jù)類型
9.1?
JavaScript 所有數(shù)字都保存成 64 位浮點數(shù),這決定了整數(shù)的精確程度只能到 53 個二進制位云稚。大于這個范圍的整數(shù)隧饼,JavaScript 是無法精確表示的,這使得 JavaScript 不適合進行科學和金融方面的精確計算静陈。
現(xiàn)在有一個提案燕雁,引入了新的數(shù)據(jù)類型 Integer(整數(shù)),來解決這個問題鲸拥。整數(shù)類型的數(shù)據(jù)只用來表示整數(shù)拐格,沒有位數(shù)的限制,任何位數(shù)的整數(shù)都可以精確表示刑赶。
9.2?
為了與 Number 類型區(qū)別捏浊,Integer 類型的數(shù)據(jù)必須使用后綴 n 表示。
9.3?
JavaScript 原生提供Integer對象撞叨,用來生成 Integer 類型的數(shù)值金踪。轉換規(guī)則基本與Number()一致。
9.4
在數(shù)學運算方面牵敷,Integer 類型的+胡岔、-、*和**這四個二元運算符枷餐,與 Number 類型的行為一致靶瘸。除法運算/會舍去小數(shù)部分,返回一個整數(shù)尖淘。
9.5
Integer 類型不能與 Number 類型進行混合運算奕锌。
9.6
相等運算符(==)會改變數(shù)據(jù)類型,也是不允許混合使用村生。
精確相等運算符(===)不會改變數(shù)據(jù)類型惊暴,因此可以混合使用。