數(shù)值的擴展

二進制和八進制表示法


  • ES6中提供了二進制和八進制的新寫法,二進制以0b開頭,八進制以0o開頭
0b111110111 === 503 // true
0o767 === 503 // true
  • 也可以使用Number方法將數(shù)值轉(zhuǎn)化為十進制
Number('0b111')  // 7
Number('0o10')  // 8

Number.isFinite(), Number.isNaN()


  • 這兩個方法作為ES6新增的,前者用于驗證數(shù)字是否有限,后者用于驗證變量是否為NaN,且驗證時都不進行強制類型轉(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()


  • 這兩個方法由全局對象移植到Number對象上,行為完全不變,只是為了逐步實現(xiàn)語言模塊化

Number.isInteger()


  • 驗證一個數(shù)是否為整數(shù)

Number.EPSILON


  • 表示一個大于1的數(shù)與1做差的極小數(shù)約為2^-52
  • 由于浮點數(shù)無法進行精確運算,所以該數(shù)可用于浮點數(shù)運算作比較。

安全整數(shù)和 Number.isSafeInteger() ;


  • 安全整數(shù)指整數(shù)的范圍在253~253之間的數(shù)(不包括端點)
  • 這個函數(shù)是用來驗證一個變量是否為安全整數(shù)

Math對象的擴展


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ù)值符號
    • 參數(shù)為正數(shù),返回+1;
    • 參數(shù)為負數(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()
  • 用于計算一個數(shù)的立方跟,非數(shù)字會進行強制類型轉(zhuǎn)換
Math.cbrt(-1) // -1
Math.cbrt(0)  // 0
Math.cbrt(1)  // 1
Math.cbrt(2)  // 1.2599210498948734
Math.clz32()
  • 在JS中,整數(shù)以32為二進制表示,該函數(shù)返回數(shù)字的前導(dǎo)0的個數(shù);
  • 對于小數(shù)只考慮整數(shù)部分;
  • 對于非整數(shù),會先進行強制類型轉(zhuǎn)換
Math.imul()
  • 在JS中,當兩數(shù)之積超過2^53的時候,在低數(shù)位會發(fā)生不準確的現(xiàn)象,因此出現(xiàn)了該函數(shù),該函數(shù)用于返回倆數(shù)的積,在運算較小數(shù)時,與運算符*并無異同。
Math.fround()
  • 返回一個數(shù)的單精度浮點數(shù)的值,對于整數(shù)返回結(jié)果與原數(shù)相同,區(qū)別主要是那些無法用64個二進制位精確表示的小數(shù)。這時,Math.fround方法會返回最接近這個小數(shù)的單精度浮點數(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
對數(shù)方法
Math.expm1()
  • Math.expm1(x)返回e^x-1;
Math.log1p()
  • Math.log1p(x)返回1+x的自然對數(shù),若想x<-1,則返回NaN
Math.log10()
  • 這個……
Math.log2()
  • 這個也……
雙曲函數(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)
    • 高中數(shù)學(xué)差,都不懂……
指數(shù)運算符
  • 在ES2016中新增了(**)運算符
let a = 1.5;
a **= 2;
// 等同于 a = a * a;

let b = 4;
b **= 3;
// 等同于 b = b * b * b;
  • 注意,在 V8 引擎中,指數(shù)運算符與Math.pow的實現(xiàn)不相同,對于特別大的運算結(jié)果,兩者會有細微的差異。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容