天天看點

JS内置對象Math詳解

  • Math 是一個内置對象, 它具有數學常數和函數的屬性和方法。不是一個函數對象。
  • Math 适用于 Number 類型。它不支援 BigInt。
  • 與其他全局對象不同的是,​

    ​Math​

    ​​ 不是一個構造器。​

    ​Math​

    ​ 的所有屬性與方法都是靜态的。

Math的相關屬性

  • Math.E 屬性表示自然對數的底數(或稱為基數),e,約等于 2.718。(2.718281828459045)
  • Math.LN10屬性表示 10 的自然對數,約為 2.302:
  • Math.LN2屬性表示 2 的自然對數,約為 0.693:
  • Math.LOG10E屬性表示以 10 為底數,e 的對數,約為 0.434:
  • Math.LOG2E屬性表示以 2 為底數,e 的對數,約為 1.442:
  • Math.PI表示一個圓的周長與直徑的比例,約為 3.14159:
  • Math.SQRT1_2屬性表示 1/2 的平方根,約為 0.707:
  • Math.SQRT2屬性表示 2 的平方根,約為 1.414:

Math的相關方法

​Math.abs(x)​

​ 函數傳回指定數字 “x“ 的絕對值。

傳入一個非數字形式的字元串或者 undefined/empty 變量,将傳回 ​

​NaN​

​。傳入 null 将傳回 0。

Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs("123string"); // NaN
Math.abs();         // NaN
Math.abs(undefined) // NaN      

​Math.ceil()​

Math.abs('-1.1');     // 1
Math.abs(2.1);       // 3
Math.abs(null);     // 0
Math.abs("string"); // NaN
Math.abs();         // NaN      

​Math.floor()​

​ 傳回小于或等于一個給定數字的最大整數。

Math.floor(45.95) // 45 
Math.floor(4) // 4 
Math.floor(-45.05)// -46       

 ​

​Math.max()​

​ 函數傳回一組數中的最大值。

傳回給定的一組數字中的最大值。如果給定的參數中至少有一個參數無法被轉換成數字,則會傳回 NaN。如果沒有參數,則結果為 - Infinity。

Math.max(10, 20,30); // 30
Math.max.call(null,10, 20,30);  // 30
Math.max.apply(null,[10, 20,30]); // 30
Math.max(10, 20, 30 , 'test');  //NaN
Math.max() // -Infinity      

​Math.min()​

​ 傳回零個或更多個數值的最小值。

Math.min(10, 20,30); // 10
Math.min.call(null,10, 20,30);  // 10
Math.min.apply(null,[10, 20,30]); // 10
Math.min(10, 20, 30 , 'test');  // NaN
Math.min() // Infinity      

​Math.pow()​

​​ 函數傳回基數(​

​base​

​​)的指數(​

​exponent​

​​)次幂​

​,即​

​​ ​

​baseexponent​

​。

Math.pow(2, 3) // 2的三次方 = 8      

​Math.random()​

​ 函數傳回一個浮點,  僞随機數在範圍[0,1),也就是說,從0(包括0)往上,但是不包括1(排除1)

Math.random()      

​Math.round()​

​ 函數傳回一個數字四舍五入後最接近的整數。

Math.round(-21.49) // -21      

​Math.sign()​

此函數共有5種傳回值, 分别是 1, -1, 0, -0, NaN. 代表的各是正數, 負數, 正零, 負零, NaN。

傳入該函數的參數會被隐式轉換成數字類型。

Math.sign(3);     //  1
Math.sign(-3);    // -1
Math.sign("-3");  // -1
Math.sign(0);     //  0
Math.sign(-0);    // -0
Math.sign(NaN);   // NaN
Math.sign("foo"); // NaN
Math.sign();      // NaN      
Math.trunc(13.37)    // 13
Math.trunc(42.84)    // 42
Math.trunc(0.123)    //  0
Math.trunc(-0.123)   // -0
Math.trunc("-1.123") // -1
Math.trunc(NaN)      // NaN
Math.trunc("foo")    // NaN
Math.trunc()         // NaN      
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1);  // 1
Math.sqrt(0);  // 0
Math.sqrt(-1); // NaN