亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

全部開發者教程

JavaScript 入門教程

JavaScript Math

Math 是一個內置對象, 它具有數學常數和函數的屬性和方法。(MDN)

Math 對象提供了一些列的數學方法和常量,如三角函數、隨機數、π等。

1. 數學方法

數學方法其實就是常用的數學中的函數,如三角函數。

其中用到較多的是使用 Math.random() 來產生隨機數。

以下列舉部分常用的方法。

1.1 Math.floor

Math.floor() 返回小于或等于一個給定數字的最大整數。

Math.floor就是對一個數進行向下取整。

var num1 = Math.floor(2.4);
var num2 = Math.floor(2.9);

console.log(num1); // 輸出:2
console.log(num2); // 輸出:2

因為是向下取整,不會進行四舍五入,所以不論是 2.4 還是 2.9 ,經過 Math.floor 處理后,都為 2 。

1.2 Math.ceil

Math.ceil() 函數返回大于或等于一個給定數字的最小整數。

Math.ceil 就是對一個數進行向上取整。

var num1 = Math.ceil(2.4);
var num2 = Math.ceil(2.9);

console.log(num1); // 輸出:3
console.log(num2); // 輸出:3

與 Math.floor 相反,Math.ceil 向上取整,也不會進行四舍五入,所以結果都為 3 。

許多開發者經常會弄混 Math.floorMath.ceil ,其實可以根據方法名的中譯來記憶,floor 可以理解成地板,ceil 可以理解成天花板,所以前者是向下取整,后者是向上取整。

1.3 Math.random

Math 下的 random 方法調用后返回一個大于等于零且小于一的隨機數,即區間 [0, 1) 。

var random = Math.random();

console.log(random);

可以嘗試運行多次這段代碼,random變量的值出現一樣的概率很低。

事實上 Math.random() 產生的隨機數并不是真正的隨機數,其返回的“隨機數”是由一個確定的算法得出的,這種隨機數會稱之為偽隨機數

1.3.1 隨機數應用

在需要隨機數的需求時,大部分情況下不會是需要一個區間為 [0, 1) 的隨機數,如按學號抽獎。

假設學號的范圍是 1 至 100 ,那就需要產生一個 1 至 100 之間的隨機數。

這樣可以換個思路,隨機數還是生成 [0, 1) 范圍的大小,但是將這個值放大到 [1, 100] 區間的范圍。

所以就可以把隨機數的結果先放大 100 倍,即 Math.random() * 100 ,這時候產生的數,區間就是 [0, 100) 。

因為最小值需要的是0,而不是1,就可以將這個隨機數表達式修改成 Math.random() * 100 + 1 ,這時候區間就變成了 [1, 101) 。

最后只要保證右側的區間不大于 100 即可,因為右側區間取不到 101 ,所以可以對結果進行向下取整。

最終表達式為:

Math.floor(Math.random() * 100 + 1);

由此就可以推出一個較為通用的隨機數公式:

// 隨機數區間:[下限, 上限]
Math.floor(Math.random() * 上限 + 下限);

2. 數學常量

許多數學常量被作為屬性放在 Math 對象下,如歐拉常數(E),圓周率(PI)。

var e = Math.E;
var pi = Math.PI;

console.log(e); // 輸出:2.718281828459045
console.log(pi); // 輸出:3.141592653589793

日常開發中,大部分情況下會選擇自己維護一個常量,因為可以隨時的統一的修改精度。

3. 常量與方法列表

因為都是常量與方法,這里提供相應的列表供快速查閱,內容引用自 MDN 。

3.1 常量

常量 描述
Math.E 表示自然對數的底數(或稱為基數),約等于 2.718。
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。

3.2 方法

方法 描述
Math.abs 返回一個數的的絕對值。
Math.acos 返回一個數的反余弦值(單位為弧度)。
Math.acosh 返回一個數字的反雙曲余弦值。
Math.asin 返回一個數值的反正弦(單位為弧度)。
Math.asinh 返回給定數字的反雙曲正弦值
Math.atan 返回一個數值的反正切(以弧度為單位)
Math.atan2 返回從原點(0,0)到(x,y)點的線段與x軸正方向之間的平面角度(弧度值)。
Math.atanh 函數返回一個數值反雙曲正切值。
Math.cbrt 返回任意數字的立方根。
Math.ceil 返回大于或等于一個給定數字的最小整數。
Math.clz32 返回一個數字在轉換成 32 無符號整形數字的二進制形式后, 開頭的 0 的個數。
Math.cos 返回一個數值的余弦值。
Math.cosh 返回數值的雙曲余弦函數。
Math.exp 函數返回 ex,x 表示參數,e 是歐拉常數(Euler’s constant),自然對數的底數。
Math.expm1 函數返回 Ex - 1, 其中 x 是該函數的參數, E 是自然對數的底數。
Math.floor 返回小于或等于一個給定數字的最大整數。
Math.fround 將任意的數字轉換為離它最近的單精度浮點數形式的數字。
Math.hypot 函數返回它的所有參數的平方和的平方根。
Math.imul 該函數將兩個參數分別轉換為 32 位整數,相乘后返回 32 位結果,類似 C 語言的 32 位整數相乘。
Math.log 返回一個數的自然對數。
Math.log10 函數返回一個數字以 10 為底的對數。
Math.log1p 函數返回一個數字加1后的自然對數 (底為 E), 即log(x+1)。
Math.log2 函數返回一個數字以 2 為底的對數。
Math.max 返回一組數中的最大值。
Math.min 返回零個或更多個數值的最小值。
Math.pow 函數返回基數(base)的指數(exponent)次冪,即 baseexponent。
Math.random 函數返回一個浮點, 偽隨機數在范圍從0到小于1,也就是說,從0(包括0)往上,但是不包括1(排除1)。
Math.round 函數返回一個數字四舍五入后最接近的整數。
Math.sign 函數返回一個數字的符號, 指示數字是正數,負數還是零。
Math.sin 函數返回一個數值的正弦值。
Math.sinh 函數返回一個數字(單位為角度)的雙曲正弦值。
Math.sqrt 函數返回一個數的平方根。
Math.tan 返回一個數值的正切值。
Math.tanh 函數將會返回一個數的雙曲正切函數值。
Math.trunc 方法會將數字的小數部分去掉,只保留整數部分。

4. 小結

Math 對象包含了很多數學方法與常量,較常用的是用于產生偽隨機數的 Math.random,根據特性可以推出隨機數 [下限, 上限] 的生成公式 Math.floor(Math.random() * 上限 + 下限);。

盡量將 Math 對象下的方法過一遍,留住印象,避免造不必要的輪子。