Math
Math
是包含資料屬性和處理數字方法的物件。你可以將它視為一個陽春的模組:它是在 JavaScript 有模組之前很久就建立的。
Math.E: number
[ES1]
歐拉數,自然對數的底數,約為 2.7182818284590452354。
Math.LN10: number
[ES1]
10 的自然對數,約為 2.302585092994046。
Math.LN2: number
[ES1]
2 的自然對數,約為 0.6931471805599453。
Math.LOG10E: number
[ES1]
以 10 為底的 e 的對數,約為 0.4342944819032518。
Math.LOG2E: number
[ES1]
以 2 為底的 e 的對數,約為 1.4426950408889634。
Math.PI: number
[ES1]
數學常數 π,圓的周長與其直徑的比值,約為 3.1415926535897932。
Math.SQRT1_2: number
[ES1]
1/2 的平方根,約為 0.7071067811865476。
Math.SQRT2: number
[ES1]
2 的平方根,約為 1.4142135623730951。
Math.cbrt(x: number): number
[ES6]
傳回 x
的立方根。
> Math.cbrt(8)2
Math.exp(x: number): number
[ES1]
傳回 ex
(e 為歐拉數)。Math.log()
的反函數。
> Math.exp(0)1
> Math.exp(1) === Math.Etrue
Math.expm1(x: number): number
[ES6]
傳回 Math.exp(x)-1
。Math.log1p()
的反函數。非常小的數字(接近 0 的分數)會以更高的精度表示。因此,當 .exp()
傳回接近 1 的值時,此函數會傳回更精確的值。
Math.log(x: number): number
[ES1]
傳回 x
的自然對數(以 e,歐拉數為底)。Math.exp()
的反函數。
> Math.log(1)0
> Math.log(Math.E)1
> Math.log(Math.E ** 2)2
Math.log1p(x: number): number
[ES6]
傳回 Math.log(1 + x)
。Math.expm1()
的反函數。非常小的數字(接近 0 的分數)會以更高的精度表示。因此,當 .log()
的參數接近 1 時,您可以提供更精確的參數給這個函數。
Math.log10(x: number): number
[ES6]
傳回 x
以 10 為底的對數。10 ** x
的反函數。
> Math.log10(1)0
> Math.log10(10)1
> Math.log10(100)2
Math.log2(x: number): number
[ES6]
傳回 x
以 2 為底的對數。2 ** x
的反函數。
> Math.log2(1)0
> Math.log2(2)1
> Math.log2(4)2
Math.pow(x: number, y: number): number
[ES1]
傳回 x
y
,x
的 y
次方。和 x ** y
相同。
> Math.pow(2, 3)8
> Math.pow(25, 0.5)5
Math.sqrt(x: number): number
[ES1]
傳回 x
的平方根。x ** 2
的反函數。
> Math.sqrt(9)3
四捨五入是指將任意數字轉換為整數(沒有小數部分的數字)。下列函數實作不同的四捨五入方法。
Math.ceil(x: number): number
[ES1]
傳回最小的(最接近負無窮大)整數 i
,其中 x
≤ i
。
> Math.ceil(2.1)3
> Math.ceil(2.9)3
Math.floor(x: number): number
[ES1]
傳回最大的(最接近正無窮大)整數 i
,其中 i
≤ x
。
> Math.floor(2.1)2
> Math.floor(2.9)2
Math.round(x: number): number
[ES1]
傳回最接近 x
的整數。如果 x
的小數部分是 .5
,則 .round()
會進位(到最接近正無窮大的整數)
> Math.round(2.4)2
> Math.round(2.5)3
Math.trunc(x: number): number
[ES6]
移除 x
的小數部分,並傳回結果整數。
> Math.trunc(2.1)2
> Math.trunc(2.9)2
表 12 顯示四捨五入函數對幾個代表性輸入的結果。
-2.9 |
-2.5 |
-2.1 |
2.1 |
2.5 |
2.9 |
|
---|---|---|---|---|---|---|
Math.floor |
-3 |
-3 |
-3 |
2 |
2 |
2 |
Math.ceil |
-2 |
-2 |
-2 |
3 |
3 |
3 |
Math.round |
-3 |
-2 |
-2 |
2 |
3 |
3 |
Math.trunc |
-2 |
-2 |
-2 |
2 |
2 |
2 |
所有角度都以弧度指定。使用下列兩個函數在角度和弧度之間進行轉換。
function degreesToRadians(degrees) {
return degrees / 180 * Math.PI;
}.equal(degreesToRadians(90), Math.PI/2);
assert
function radiansToDegrees(radians) {
return radians / Math.PI * 180;
}.equal(radiansToDegrees(Math.PI), 180); assert
Math.acos(x: number): number
[ES1]
傳回 x
的反餘弦(餘弦的反函數)。
> Math.acos(0)1.5707963267948966
> Math.acos(1)0
Math.acosh(x: number): number
[ES6]
傳回 x
的反雙曲餘弦。
Math.asin(x: number): number
[ES1]
傳回 x
的反正弦(正弦的反函數)。
> Math.asin(0)0
> Math.asin(1)1.5707963267948966
Math.asinh(x: number): number
[ES6]
傳回雙曲線正弦函數的反正函數 x
。
Math.atan(x: number): number
[ES1]
傳回反正切函數 (反正切) x
。
Math.atanh(x: number): number
[ES6]
傳回雙曲線正切函數的反正函數 x
。
Math.atan2(y: number, x: number): number
[ES1]
傳回商數 y/x 的反正切函數。
Math.cos(x: number): number
[ES1]
傳回 x
的餘弦。
> Math.cos(0)1
> Math.cos(Math.PI)-1
Math.cosh(x: number): number
[ES6]
傳回 x
的雙曲線餘弦。
Math.hypot(...values: number[]): number
[ES6]
傳回 values
平方的總和的平方根 (畢氏定理)
> Math.hypot(3, 4)5
Math.sin(x: number): number
[ES1]
傳回 x
的正弦。
> Math.sin(0)0
> Math.sin(Math.PI / 2)1
Math.sinh(x: number): number
[ES6]
傳回 x
的雙曲線正弦。
Math.tan(x: number): number
[ES1]
傳回 x
的正切。
> Math.tan(0)0
> Math.tan(1)1.5574077246549023
Math.tanh(x: number): number;
[ES6]
傳回 x
的雙曲線正切。
Math.abs(x: number): number
[ES1]
傳回 x
的絕對值。
> Math.abs(3)3
> Math.abs(-3)3
> Math.abs(0)0
Math.clz32(x: number): number
[ES6]
計算 32 位元整數 x
中的開頭零位元。用於 DSP 演算法。
> Math.clz32(0b01000000000000000000000000000000)1
> Math.clz32(0b00100000000000000000000000000000)2
> Math.clz32(2)30
> Math.clz32(1)31
Math.max(...values: number[]): number
[ES1]
將 values
轉換為數字並傳回最大的數字。
> Math.max(3, -5, 24)24
Math.min(...values: number[]): number
[ES1]
將 values
轉換為數字並傳回最小的數字。
> Math.min(3, -5, 24)-5
Math.random(): number
[ES1]
傳回偽亂數 n
,其中 0 ≤ n
< 1。
/** Returns a random integer i with 0 <= i < max */
function getRandomInteger(max) {
return Math.floor(Math.random() * max);
}
Math.sign(x: number): number
[ES6]
傳回數字的符號
> Math.sign(-8)-1
> Math.sign(0)0
> Math.sign(3)1