數(shù)值的擴(kuò)展

二進(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();
  • 用于去除小數(shù)位
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()
  • 返回所有參數(shù)平方和的平方根
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.expm1(x)返回e^x-1;
Math.log1p()
  • Math.log1p(x)返回1+x的自然對(duì)數(shù),若想x<-1,則返回NaN
Math.log10()
  • 這個(gè)……
Math.log2()
  • 這個(gè)也……
雙曲函數(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)算符
  • 在ES2016中新增了(**)運(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ù)。

推薦閱讀更多精彩內(nèi)容