|
Math對(duì)象
Math對(duì)象是在高中數(shù)學(xué)課就學(xué)過的內(nèi)置對(duì)象。它知道解決最復(fù)雜的數(shù)學(xué)問題的所有公式,如果給它要處理的數(shù)字,即能計(jì)算出結(jié)果。
Math對(duì)象有幾個(gè)屬性,主要是數(shù)學(xué)界的專用值。下表類出了這些屬性:
屬 性 | 說 明 |
E | 值e,自然對(duì)數(shù)的底 |
LN10 | 10的自然對(duì)數(shù) |
LN2 | 2的自然對(duì)數(shù) |
LOG2E | 以2為底E的對(duì)數(shù) |
LOG10E | 以10為底E的對(duì)數(shù) |
PI | 值π |
SQRT1_2 | 1/2的平方根 |
SQRT2 | 2的平方根 |
雖然這些值的意義與用法不在本書討論范圍內(nèi),但如果清楚它們是什么,在需要時(shí),即可使用它們。
Math對(duì)象還包括許多專門用于執(zhí)行簡單的及復(fù)雜的數(shù)學(xué)計(jì)算的方法。
方法min()和max()用于判斷一組數(shù)中的最大值和最小值。這兩個(gè)方法都可接受任意多個(gè)參數(shù):
對(duì)于數(shù)字3、54、32和16,max()返回54,min()返回3。用這些方法,可免去用循環(huán)或if語句來判斷一組數(shù)中的最大值。
另一個(gè)方法abs()返回?cái)?shù)字的絕對(duì)值。絕對(duì)值是負(fù)數(shù)的正值版本(正數(shù)的絕對(duì)值就是它自身)。
這個(gè)例子中,abs(-1)返回1,abs(1)也返回1。
下一組方法用于把小數(shù)舍入成整數(shù)。處理舍入操作的方法有三個(gè),即ceil()、floor()和round(),它們的處理方法不同:
q 方法ceil()表示向上舍入函數(shù),總是把數(shù)字向上舍入到最接近的值。
q 方法floor()表示向下舍入函數(shù),總是把數(shù)字向下舍入到最接近的值。
q 方法round()表示標(biāo)準(zhǔn)的舍入函數(shù),如果數(shù)字與下一個(gè)整數(shù)的差不超過0.5,則向上舍入,否則向下舍入。這是在初中學(xué)過的舍入規(guī)則。
為說明每種方法的處理方式,考慮使用值25.5:
對(duì)于ceil()和round(),傳遞25.5,返回的是26,而floor()返回的是25。注意不要交替使用這些方法,因?yàn)樽詈罂赡艿玫脚c預(yù)期不符的結(jié)果。
另一組方法與指數(shù)的用法有關(guān)。這些方法包括exp(),用于把Math.E升到指定的冪;log()用于返回特定數(shù)字的自然對(duì)數(shù);pow()用于把指定的數(shù)字升到指定的冪;sqrt()用于返回指定數(shù)字的平方根。
方法exp()和log()本質(zhì)上功能相反,exp()把Math.E升到特定的冪,log()則判斷Math.E的多少次指數(shù)才等于指定的值。例如:
這里,首先用exp()把Math.E升到10次冪,然后log()返回10,即等于數(shù)字iNum必需的指數(shù)。很多人都對(duì)此感到迷茫。全世界的高中生和數(shù)學(xué)系的大學(xué)生都被此類問題難倒過。如果你對(duì)自然對(duì)數(shù)一無所知,那么有可能永遠(yuǎn)都不需要為它編寫代碼。
方法pow()用于把數(shù)字升到指定的冪,如把2升到10次冪(在數(shù)學(xué)中表示為210):
pow()的第一個(gè)參數(shù)是基數(shù),此例子中是2。第二個(gè)參數(shù)是要升到的冪,此例子中是10。
不建議把Math.E作為pow()方法的基數(shù)。最好使用exp()對(duì)Math.E進(jìn)行升冪運(yùn)算,因?yàn)樗菍S眠\(yùn)算,計(jì)算出的值更精確。
這組方法中的最后一個(gè)方法是sqrt(),用于返回指定數(shù)字的平方根。它只有一個(gè)參數(shù),即要求平方根的數(shù)字。要求4的平方根,只需要用一行代碼:
當(dāng)然,4的平方根是2,就是這行代碼的輸出。
你也許會(huì)問“為什么平方根必須利用指數(shù)”?實(shí)際上,數(shù)字平方根就是它的1/2次冪。例如,21/2就是2的平方根。
Math對(duì)象還有一整套三角函數(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é)果也是由實(shí)現(xiàn)決定的,因?yàn)槊總€(gè)值的計(jì)算方法都有很多,從而使得不同的實(shí)現(xiàn)生成的結(jié)果的精度也不同。
Math對(duì)象的最后一個(gè)方法是random(),該方法返回一個(gè)0到1之間的隨機(jī)數(shù),不包括0和1。這是在主頁上顯示隨機(jī)引述或新聞的站點(diǎn)常用的工具。可用下面的形式調(diào)用random()方法,在某個(gè)范圍內(nèi)選擇隨機(jī)數(shù):
這里使用方法floor(),因?yàn)閞andom()返回的都是小數(shù)值,也就是說,用它乘以一個(gè)數(shù),然后再加上一個(gè)數(shù),得到的仍然是小數(shù)值。通常你想選擇一個(gè)隨機(jī)整數(shù)值。因此,必須使用floor()方法。如果想選擇一個(gè)1到10之間的數(shù),代碼如下:
可能出現(xiàn)的值有10個(gè)(1到10),這些值中的第一個(gè)是1。如果想選擇2到10之間的值,代碼如下:
從2到10,只有9個(gè)數(shù)字,所以選項(xiàng)總數(shù)為9,其中第一個(gè)值是2。許多時(shí)候,使用計(jì)算選項(xiàng)總數(shù)的函數(shù)和第一個(gè)可用的值更容易些:
使用函數(shù),可很容易地選擇Array中的隨機(jī)項(xiàng):
這里,selectFrom()函數(shù)的第二個(gè)參數(shù)是數(shù)組的長度減1,即數(shù)組中最后一個(gè)元素的位置。
JavaScript技術(shù):Javascript Math對(duì)象,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。