Javascript Math對象
Math對象
Math對象是在高中數(shù)學(xué)課就學(xué)過的內(nèi)置對象。它知道解決最復(fù)雜的數(shù)學(xué)問題的所有公式,如果給它要處理的數(shù)字,即能計算出結(jié)果。
Math對象有幾個屬性,主要是數(shù)學(xué)界的專用值。下表類出了這些屬性:
屬 性 |
說 明 |
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ù)學(xué)計算的方法。
方法min()和max()用于判斷一組數(shù)中的最大值和最小值。這兩個方法都可接受任意多個參數(shù):
對于數(shù)字3、54、32和16,max()返回54,min()返回3。用這些方法,可免去用循環(huán)或if語句來判斷一組數(shù)中的最大值。
另一個方法abs()返回數(shù)字的絕對值。絕對值是負(fù)數(shù)的正值版本(正數(shù)的絕對值就是它自身)。
這個例子中,abs(-1)返回1,abs(1)也返回1。
下一組方法用于把小數(shù)舍入成整數(shù)。處理舍入操作的方法有三個,即ceil()、floor()和round(),它們的處理方法不同:
q 方法ceil()表示向上舍入函數(shù),總是把數(shù)字向上舍入到最接近的值。
q 方法floor()表示向下舍入函數(shù),總是把數(shù)字向下舍入到最接近的值。
q 方法round()表示標(biāo)準(zhǔn)的舍入函數(shù),如果數(shù)字與下一個整數(shù)的差不超過0.5,則向上舍入,否則向下舍入。這是在初中學(xué)過的舍入規(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ù)學(xué)系的大學(xué)生都被此類問題難倒過。如果你對自然對數(shù)一無所知,那么有可能永遠(yuǎn)都不需要為它編寫代碼。
方法pow()用于把數(shù)字升到指定的冪,如把2升到10次冪(在數(shù)學(xué)中表示為210):
pow()的第一個參數(shù)是基數(shù),此例子中是2。第二個參數(shù)是要升到的冪,此例子中是10。
不建議把Math.E作為pow()方法的基數(shù)。最好使用exp()對Math.E進(jìn)行升冪運算,因為它是專用運算,計算出的值更精確。
這組方法中的最后一個方法是sqrt(),用于返回指定數(shù)字的平方根。它只有一個參數(shù),即要求平方根的數(shù)字。要求4的平方根,只需要用一行代碼:
當(dāng)然,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之間的隨機(jī)數(shù),不包括0和1。這是在主頁上顯示隨機(jī)引述或新聞的站點常用的工具??捎孟旅娴男问秸{(diào)用random()方法,在某個范圍內(nèi)選擇隨機(jī)數(shù):
這里使用方法floor(),因為random()返回的都是小數(shù)值,也就是說,用它乘以一個數(shù),然后再加上一個數(shù),得到的仍然是小數(shù)值。通常你想選擇一個隨機(jī)整數(shù)值。因此,必須使用floor()方法。如果想選擇一個1到10之間的數(shù),代碼如下:
可能出現(xiàn)的值有10個(1到10),這些值中的第一個是1。如果想選擇2到10之間的值,代碼如下:
從2到10,只有9個數(shù)字,所以選項總數(shù)為9,其中第一個值是2。許多時候,使用計算選項總數(shù)的函數(shù)和第一個可用的值更容易些:
使用函數(shù),可很容易地選擇Array中的隨機(jī)項:
這里,selectFrom()函數(shù)的第二個參數(shù)是數(shù)組的長度減1,即數(shù)組中最后一個元素的位置。
相關(guān)文章
JavaScript中的原型繼承基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了JavaScript中的原型繼承基礎(chǔ)學(xué)習(xí)教程,基于原型prototype的繼承是JavaScript中實現(xiàn)面向?qū)ο笾械睦^承特性的基本手段,需要的朋友可以參考下2016-05-05a標(biāo)簽的href和onclick 的事件的區(qū)別介紹
a標(biāo)簽的href與onclick事件,想必大家不陌生吧,至于它們有什么區(qū)別,你知道嗎?下面就為大家介紹下,感興趣的朋友可以學(xué)習(xí)下,希望對大家有所幫助2013-07-07Web面試常問回流reflow與重繪repaint原理及區(qū)別
本文主要為大家講解了瀏覽器的渲染機(jī)制回流與重繪的原理,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步早日升職加薪2021-09-09JavaScript對象內(nèi)置對象,值類型和引用類型講解
本文講述了JavaScript的一些對象,值的類型和引用類型的講解,詳細(xì)的使用圖文進(jìn)行說明歸納和整理2021-06-06