二進(jìn)制和八進(jìn)制表示
ES6提供了二進(jìn)制和八進(jìn)制的心寫法,分別用0b
(0B
)和0o
(0O
)
0b111===5 //true
0o10 ===8//true
要轉(zhuǎn)成十進(jìn)制,可以使用Number
Number.isFinite(), Number.isNaN(),Number.isInteger()
Number.isFinite()
判斷一個(gè)值是否是有限的
Number.isFinite(1) //true
Number.isFinite(Infinity) //false
Number.idNaN()
判斷一個(gè)值是否是NaN
Number.isNaN(NaN) // true
Number.isNaN(1)
Number.isInteger()
判斷一個(gè)值是否是整數(shù).注意點(diǎn):在JS內(nèi),整數(shù)和浮點(diǎn)數(shù)是同樣的存儲(chǔ)方法
Number.isInteger(25) //true
Number.isInteger(25.0) //true
Number.isInteger(25.1) //false
Number.parseInt(), Number.parseFloat()
ES6將全局的兩個(gè)方法移植到了Number對象上,行為完全一致
Number.EPSILON
Number.EPSILON
是ES6新增的一個(gè)極小的常量,目的在于設(shè)置一個(gè)誤差范圍,因?yàn)楦↑c(diǎn)數(shù)計(jì)算是不精確的.如果誤差小于Number.EPSILON
那么可以認(rèn)為得到了正確的結(jié)果
安全整數(shù)和Number.isSafeInteger()
js能夠準(zhǔn)確表示的整數(shù)范圍在-2^53
到2^53
之間,不含兩個(gè)端點(diǎn).超過范圍會(huì)導(dǎo)致無法精確表示
Math.pow(2, 53) === Math.pow(2, 53) + 1 // true
ES6引入了兩個(gè)常量,分別表示范圍的上下線Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
Number.isSafeInteger()
用來判斷一個(gè)數(shù)是否在安全范圍內(nèi)
Math對象的拓展
ES6在Math對象上新增了17個(gè)與數(shù)學(xué)相關(guān)的方法,且都是靜態(tài),只能在Math對象上調(diào)用
Math.trunc()
用于去除一個(gè)數(shù)的小數(shù)部分,返回整數(shù)部分,對于非數(shù)值,會(huì)默認(rèn)轉(zhuǎn)化為數(shù)值,對無法取整的返回NaN
Math.sign()
判斷一個(gè)數(shù)是整數(shù)負(fù)數(shù)還是0 五個(gè)返回值,分別是 +1 -1 0 -0 NaN,對應(yīng)正數(shù),負(fù)數(shù),0,-0,其他值Math.cbrt()
用于計(jì)算一個(gè)數(shù)的立方根Math.clz32()
返回一個(gè)數(shù)的32位無符號整數(shù)形式有多少個(gè)前導(dǎo)0<<
左移運(yùn)算符與之直接相關(guān)Math.imul()
返回兩個(gè)數(shù)以32位帶符號整數(shù)形式相乘的結(jié)果,返回也是32位帶符號整數(shù),大多數(shù)情況下,Math.imul(a,b)
和a*b
結(jié)果相同.但是因?yàn)閖s有精度限制,超過2的53次方無法精確表示.所以對于大位數(shù)的乘法,低位數(shù)往往是不正確的,Math.imul
方法可以返回正確的低位數(shù)值Math.fround()
返回一個(gè)數(shù)的單精度浮點(diǎn)數(shù)形式Math.hypot()
返回所有參數(shù)的平方和的平方根
對數(shù)方法
Math.expm1(x)
返回ex - 1,即Math.exp(x)-1Math.log1p(x)
返回1+x的自然對數(shù)Math.log10(x)
返回以10為底的X的對數(shù)Math.log2(x)
返回以2為底的X的對數(shù)
三角函數(shù)方法
6個(gè)三角函數(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)
指數(shù)運(yùn)算符
新的運(yùn)算符**
2**2 //4
2**4 //16
需要注意的是,在V8引擎中,指數(shù)運(yùn)算符和Math.pow
的實(shí)現(xiàn)不太相同,對于特別大的結(jié)果會(huì)有細(xì)微的差異