Javascript Math對(duì)象
Math對(duì)象
Math對(duì)象是在高中數(shù)學(xué)課就學(xué)過(guò)的內(nèi)置對(duì)象。它知道解決最復(fù)雜的數(shù)學(xué)問(wèn)題的所有公式,如果給它要處理的數(shù)字,即能計(jì)算出結(jié)果。
Math對(duì)象有幾個(gè)屬性,主要是數(shù)學(xué)界的專(zhuān)用值。下表類(lèi)出了這些屬性:
屬 性 |
說(shuō) 明 |
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的平方根 |
雖然這些值的意義與用法不在本書(shū)討論范圍內(nèi),但如果清楚它們是什么,在需要時(shí),即可使用它們。
Math對(duì)象還包括許多專(zhuān)門(mén)用于執(zhí)行簡(jiǎn)單的及復(fù)雜的數(shù)學(xué)計(jì)算的方法。
方法min()和max()用于判斷一組數(shù)中的最大值和最小值。這兩個(gè)方法都可接受任意多個(gè)參數(shù):
對(duì)于數(shù)字3、54、32和16,max()返回54,min()返回3。用這些方法,可免去用循環(huán)或if語(yǔ)句來(lái)判斷一組數(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ù)的差不超過(guò)0.5,則向上舍入,否則向下舍入。這是在初中學(xué)過(guò)的舍入規(guī)則。
為說(shuō)明每種方法的處理方式,考慮使用值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é)生都被此類(lèi)問(wèn)題難倒過(guò)。如果你對(duì)自然對(duì)數(shù)一無(wú)所知,那么有可能永遠(yuǎn)都不需要為它編寫(xiě)代碼。
方法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)樗菍?zhuān)用運(yùn)算,計(jì)算出的值更精確。
這組方法中的最后一個(gè)方法是sqrt(),用于返回指定數(shù)字的平方根。它只有一個(gè)參數(shù),即要求平方根的數(shù)字。要求4的平方根,只需要用一行代碼:
當(dāng)然,4的平方根是2,就是這行代碼的輸出。
你也許會(huì)問(wèn)“為什么平方根必須利用指數(shù)”?實(shí)際上,數(shù)字平方根就是它的1/2次冪。例如,21/2就是2的平方根。
Math對(duì)象還有一整套三角函數(shù)方法。下表列出了這些方法:
方 法 |
說(shuō) 明 |
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。這是在主頁(yè)上顯示隨機(jī)引述或新聞的站點(diǎn)常用的工具??捎孟旅娴男问秸{(diào)用random()方法,在某個(gè)范圍內(nèi)選擇隨機(jī)數(shù):
這里使用方法floor(),因?yàn)閞andom()返回的都是小數(shù)值,也就是說(shuō),用它乘以一個(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ù)組的長(zhǎng)度減1,即數(shù)組中最后一個(gè)元素的位置。
相關(guān)文章
JavaScript中的原型繼承基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了JavaScript中的原型繼承基礎(chǔ)學(xué)習(xí)教程,基于原型prototype的繼承是JavaScript中實(shí)現(xiàn)面向?qū)ο笾械睦^承特性的基本手段,需要的朋友可以參考下2016-05-05對(duì)象轉(zhuǎn)換為原始值的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇對(duì)象轉(zhuǎn)換為原始值的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06a標(biāo)簽的href和onclick 的事件的區(qū)別介紹
a標(biāo)簽的href與onclick事件,想必大家不陌生吧,至于它們有什么區(qū)別,你知道嗎?下面就為大家介紹下,感興趣的朋友可以學(xué)習(xí)下,希望對(duì)大家有所幫助2013-07-07Web面試常問(wèn)回流reflow與重繪repaint原理及區(qū)別
本文主要為大家講解了瀏覽器的渲染機(jī)制回流與重繪的原理,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步早日升職加薪2021-09-09JavaScript對(duì)象內(nèi)置對(duì)象,值類(lèi)型和引用類(lèi)型講解
本文講述了JavaScript的一些對(duì)象,值的類(lèi)型和引用類(lèi)型的講解,詳細(xì)的使用圖文進(jìn)行說(shuō)明歸納和整理2021-06-06javascript中神奇的 Date對(duì)象小結(jié)
日常生活中,各種形式的時(shí)間字符到處都是。時(shí)間觀念的產(chǎn)生,時(shí)間單位、計(jì)時(shí)工具的發(fā)明,給人類(lèi)帶來(lái)的變化實(shí)在一言難盡。今天就來(lái)談?wù)勅掌谀切┦聝?。一起?lái)看看 JavaScript 中的日期對(duì)象 Date。2017-10-10