Javascript Math對象
Math對象
Math對象是在高中數(shù)學課就學過的內(nèi)置對象。它知道解決最復(fù)雜的數(shù)學問題的所有公式,如果給它要處理的數(shù)字,即能計算出結(jié)果。
Math對象有幾個屬性,主要是數(shù)學界的專用值。下表類出了這些屬性:
|
屬 性 |
說 明 |
|
E |
值e,自然對數(shù)的底 |
|
LN10 |
10的自然對數(shù) |
|
LN2 |
2的自然對數(shù) |
|
LOG2E |
以2為底E的對數(shù) |
|
LOG10E |
以10為底E的對數(shù) |
|
PI |
值π |
|
SQRT1_2 |
1/2的平方根 |
|
SQRT2 |
2的平方根 |
雖然這些值的意義與用法不在本書討論范圍內(nèi),但如果清楚它們是什么,在需要時,即可使用它們。
Math對象還包括許多專門用于執(zhí)行簡單的及復(fù)雜的數(shù)學計算的方法。
方法min()和max()用于判斷一組數(shù)中的最大值和最小值。這兩個方法都可接受任意多個參數(shù):
![]()
![]()
![]()
對于數(shù)字3、54、32和16,max()返回54,min()返回3。用這些方法,可免去用循環(huán)或if語句來判斷一組數(shù)中的最大值。
另一個方法abs()返回數(shù)字的絕對值。絕對值是負數(shù)的正值版本(正數(shù)的絕對值就是它自身)。
![]()
這個例子中,abs(-1)返回1,abs(1)也返回1。
下一組方法用于把小數(shù)舍入成整數(shù)。處理舍入操作的方法有三個,即ceil()、floor()和round(),它們的處理方法不同:
q 方法ceil()表示向上舍入函數(shù),總是把數(shù)字向上舍入到最接近的值。
q 方法floor()表示向下舍入函數(shù),總是把數(shù)字向下舍入到最接近的值。
q 方法round()表示標準的舍入函數(shù),如果數(shù)字與下一個整數(shù)的差不超過0.5,則向上舍入,否則向下舍入。這是在初中學過的舍入規(guī)則。
為說明每種方法的處理方式,考慮使用值25.5:
![]()
對于ceil()和round(),傳遞25.5,返回的是26,而floor()返回的是25。注意不要交替使用這些方法,因為最后可能得到與預(yù)期不符的結(jié)果。
另一組方法與指數(shù)的用法有關(guān)。這些方法包括exp(),用于把Math.E升到指定的冪;log()用于返回特定數(shù)字的自然對數(shù);pow()用于把指定的數(shù)字升到指定的冪;sqrt()用于返回指定數(shù)字的平方根。
方法exp()和log()本質(zhì)上功能相反,exp()把Math.E升到特定的冪,log()則判斷Math.E的多少次指數(shù)才等于指定的值。例如:
![]()
![]()
這里,首先用exp()把Math.E升到10次冪,然后log()返回10,即等于數(shù)字iNum必需的指數(shù)。很多人都對此感到迷茫。全世界的高中生和數(shù)學系的大學生都被此類問題難倒過。如果你對自然對數(shù)一無所知,那么有可能永遠都不需要為它編寫代碼。
方法pow()用于把數(shù)字升到指定的冪,如把2升到10次冪(在數(shù)學中表示為210):
![]()
pow()的第一個參數(shù)是基數(shù),此例子中是2。第二個參數(shù)是要升到的冪,此例子中是10。
不建議把Math.E作為pow()方法的基數(shù)。最好使用exp()對Math.E進行升冪運算,因為它是專用運算,計算出的值更精確。
這組方法中的最后一個方法是sqrt(),用于返回指定數(shù)字的平方根。它只有一個參數(shù),即要求平方根的數(shù)字。要求4的平方根,只需要用一行代碼:
![]()
當然,4的平方根是2,就是這行代碼的輸出。
你也許會問“為什么平方根必須利用指數(shù)”?實際上,數(shù)字平方根就是它的1/2次冪。例如,21/2就是2的平方根。
Math對象還有一整套三角函數(shù)方法。下表列出了這些方法:
|
方 法 |
說 明 |
|
acos(x) |
返回x的反余弦值 |
|
asin(x) |
返回x的反正弦值 |
|
atan(x) |
返回x的反正切值 |
|
atan2(y,x) |
返回y/x的反余弦值 |
|
cos(x) |
返回x的余弦值 |
|
sin(x) |
返回x的正弦值 |
|
|
返回x的正切值 |
即使這些方法是ECMA-262定義的,結(jié)果也是由實現(xiàn)決定的,因為每個值的計算方法都有很多,從而使得不同的實現(xiàn)生成的結(jié)果的精度也不同。
Math對象的最后一個方法是random(),該方法返回一個0到1之間的隨機數(shù),不包括0和1。這是在主頁上顯示隨機引述或新聞的站點常用的工具。可用下面的形式調(diào)用random()方法,在某個范圍內(nèi)選擇隨機數(shù):
![]()
這里使用方法floor(),因為random()返回的都是小數(shù)值,也就是說,用它乘以一個數(shù),然后再加上一個數(shù),得到的仍然是小數(shù)值。通常你想選擇一個隨機整數(shù)值。因此,必須使用floor()方法。如果想選擇一個1到10之間的數(shù),代碼如下:
![]()
可能出現(xiàn)的值有10個(1到10),這些值中的第一個是1。如果想選擇2到10之間的值,代碼如下:
![]()
從2到10,只有9個數(shù)字,所以選項總數(shù)為9,其中第一個值是2。許多時候,使用計算選項總數(shù)的函數(shù)和第一個可用的值更容易些:

使用函數(shù),可很容易地選擇Array中的隨機項:
![]()
這里,selectFrom()函數(shù)的第二個參數(shù)是數(shù)組的長度減1,即數(shù)組中最后一個元素的位置。
相關(guān)文章
Web面試常問回流reflow與重繪repaint原理及區(qū)別
本文主要為大家講解了瀏覽器的渲染機制回流與重繪的原理,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步早日升職加薪2021-09-09
JavaScript對象內(nèi)置對象,值類型和引用類型講解
本文講述了JavaScript的一些對象,值的類型和引用類型的講解,詳細的使用圖文進行說明歸納和整理2021-06-06

