二進(jìn)制和八進(jìn)制表示法
- ES6中提供了二進(jìn)制和八進(jìn)制的新寫法,二進(jìn)制以0b開頭,八進(jìn)制以0o開頭
0b111110111 === 503 // true
0o767 === 503 // true
- 也可以使用Number方法將數(shù)值轉(zhuǎn)化為十進(jìn)制
Number('0b111') // 7
Number('0o10') // 8
Number.isFinite(), Number.isNaN()
- 這兩個(gè)方法作為ES6新增的,前者用于驗(yàn)證數(shù)字是否有限,后者用于驗(yàn)證變量是否為NaN,且驗(yàn)證時(shí)都不進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('foo'); // false
Number.isFinite('15'); // false
Number.isFinite(true); // false
Number.isNaN(NaN) // true
Number.isNaN(15) // false
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true'/0) // true
Number.isNaN('true'/'true') // true
Number.parseInt(), Number.parseFloat()
- 這兩個(gè)方法由全局對(duì)象移植到Number對(duì)象上,行為完全不變,只是為了逐步實(shí)現(xiàn)語(yǔ)言模塊化
Number.isInteger()
- 驗(yàn)證一個(gè)數(shù)是否為整數(shù)
Number.EPSILON
- 表示一個(gè)大于1的數(shù)與1做差的極小數(shù)約為2^-52
- 由于浮點(diǎn)數(shù)無(wú)法進(jìn)行精確運(yùn)算,所以該數(shù)可用于浮點(diǎn)數(shù)運(yùn)算作比較。
安全整數(shù)和 Number.isSafeInteger() ;
- 安全整數(shù)指整數(shù)的范圍在253~253之間的數(shù)(不包括端點(diǎn))
- 這個(gè)函數(shù)是用來(lái)驗(yàn)證一個(gè)變量是否為安全整數(shù)
Math對(duì)象的擴(kuò)展
Math.trunc();
Math.trunc(4.1) // 4
Math.trunc(4.9) // 4
Math.trunc(-4.1) // -4
Math.trunc(-4.9) // -4
Math.trunc(-0.1234) // -0
Math.sign()
- 用于判斷數(shù)值符號(hào)
- 參數(shù)為正數(shù),返回+1;
- 參數(shù)為負(fù)數(shù),返回-1;
- 參數(shù)為0,返回0;
- 參數(shù)為-0,返回-0;
- 其他值,返回NaN。
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
Math.cbrt()
- 用于計(jì)算一個(gè)數(shù)的立方跟,非數(shù)字會(huì)進(jìn)行強(qiáng)制類型轉(zhuǎn)換
Math.cbrt(-1) // -1
Math.cbrt(0) // 0
Math.cbrt(1) // 1
Math.cbrt(2) // 1.2599210498948734
Math.clz32()
- 在JS中,整數(shù)以32為二進(jìn)制表示,該函數(shù)返回?cái)?shù)字的前導(dǎo)0的個(gè)數(shù);
- 對(duì)于小數(shù)只考慮整數(shù)部分;
- 對(duì)于非整數(shù),會(huì)先進(jìn)行強(qiáng)制類型轉(zhuǎn)換
Math.imul()
- 在JS中,當(dāng)兩數(shù)之積超過(guò)2^53的時(shí)候,在低數(shù)位會(huì)發(fā)生不準(zhǔn)確的現(xiàn)象,因此出現(xiàn)了該函數(shù),該函數(shù)用于返回倆數(shù)的積,在運(yùn)算較小數(shù)時(shí),與運(yùn)算符*并無(wú)異同。
Math.fround()
- 返回一個(gè)數(shù)的單精度浮點(diǎn)數(shù)的值,對(duì)于整數(shù)返回結(jié)果與原數(shù)相同,區(qū)別主要是那些無(wú)法用64個(gè)二進(jìn)制位精確表示的小數(shù)。這時(shí),Math.fround方法會(huì)返回最接近這個(gè)小數(shù)的單精度浮點(diǎn)數(shù)。
Math.hypot()
Math.hypot(3, 4); // 5
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); // 0
Math.hypot(NaN); // NaN
Math.hypot(3, 4, 'foo'); // NaN
Math.hypot(3, 4, '5'); // 7.0710678118654755
Math.hypot(-3); // 3
對(duì)數(shù)方法
Math.expm1()
Math.log1p()
- Math.log1p(x)返回1+x的自然對(duì)數(shù),若想x<-1,則返回NaN
Math.log10()
Math.log2()
雙曲函數(shù)方法
- ES6新增了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ù)學(xué)差,都不懂……
指數(shù)運(yùn)算符
let a = 1.5;
a **= 2;
// 等同于 a = a * a;
let b = 4;
b **= 3;
// 等同于 b = b * b * b;
- 注意,在 V8 引擎中,指數(shù)運(yùn)算符與Math.pow的實(shí)現(xiàn)不相同,對(duì)于特別大的運(yùn)算結(jié)果,兩者會(huì)有細(xì)微的差異。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。