javascript中的math對象提供了大量的算術運算功能和數值操作方法。
javascript中的math對象的與眾不同之處在于,它是一個全局對象。在使用math對象之前,既不需要將一個變量聲明為math對象,也不需要定義一個新的math對象,javascript將自動地創建好math對象,我們只須直接使用它即可。這使得math對象使用起來很容易。
math對象的屬性中包含一些經常使用的數學常量,如pi屬性(即圓周率近似值3.141592653589793)。通常情況下,要訪問這些屬性,只須在math之后加上一個點號(.),然后寫出要訪問的屬性名。例如,要計算一個圓的面積,可以使用如下代碼:
var radius = prompt("give the radius of the circle", "");
var area = (math.pi)*radius*radius;
document.write("the area is " + area);
除加(+)、減(–)、乘(*)、除(/) 4個標準算術運算外,math對象還包含一些復雜的數學方法,用于完成算術運算無法實現的復雜計算,例如cos()方法用于計算弧度參數的余弦函數。下面將介紹一些常見的數學方法。
abs()方法返回所傳入參數的絕對值。實際上,絕對值就是一個數去掉正負號之后的數值。例如,–1的絕對值是1,–4的絕對值是4等。對于正數,其絕對值就是該正數本身,例如,1的絕對值就是1。
例如:下面的代碼對–101取絕對值,并把結果輸出在頁面上:
var mynumber = -101;
document.write(math.abs(mynumber));
ceil()方法用于向上取整,它把一個數值向上舍入到最接近的最小整數,即對于math.ceil(n)方法,它將返回大于或等于n的最小整數。例如,10.01向上取整后為11,–9.99向上取整后為–9(這是因為對于負數,–9大于–10)。ceil()方法只有一個參數,即需要向上取整的數值。
ceil()方法的使用與第2章中介紹過的parseint()方法是不同的。parseint()方法只是簡單地截斷小數點之后的所有數字,把整數部分保留下來。而ceil(n)方法將向上取整,返回大于或等于n的最小整數。
例如,下面的代碼將在頁面上輸出兩行信息,第一行為ceil()方法對101.01向上取整的結果102,第二行為parseint()方法取整的結果101:
var mynumber = 101.01;
document.write(math.ceil(mynumber) + "<br>");
document.write(parseint(mynumber));
與ceil()方法類似,floor()方法也用于對一個數字進行取整,所不同的是,floor()方法用于向下取整,它把一個數值向下舍入到最接近的最大整數,即對于math.floor(n)方法,它將返回小于或等于n的最大整數。例如,math.floor(10.01)將返回10,而math.floor(–9.99)將返回–10。
round()方法用于對一個數值進行四舍五入,即當一個數小數部分大于等于0.5時,則向上舍入,小于等于0.5時則向下舍入。
例如,對于如下代碼:
var mynumber = 44.5;
document.write(math.round(mynumber) + "<br>");
mynumber = 44.49;
document.write(math.round(mynumber));
對于44.5將四舍五入為45,而對于44.49則四舍五入為44。
正如上面所述,ceil()方法、 floor()方法和round()方法都可以進行取整操作。但各個方法的取整操作是不同的。對于floor(n)方法,它返回小于或等于n的最大整數;對于ceil(n)方法,它返回大于或等于n的最小整數;而round(n)方法將對n進行四舍五入。這幾個方法可能容易混淆,表4-3格則用實例進行了說明:它顯示了一列數值,以及將這些數值作為參數分別傳入parseint()函數、ceil()方法、floor()方法和round()方法時的返回值。
表 4-3
注意,與表中其他的方法不同的是:parseint()函數是一個javascript內置對象,而不是math對象的一個方法。
如果對javascript中各個取整方法還不熟悉的話,下面的這個例子將演示這些方法的使用,以增進我們對各個取整方法的理解。首先,通過提示框獲得用戶輸入的一個數值,然后將該數值作為參數分別傳入parseint()函數、ceil()方法、 floor()方法和round()方法,各個方法的返回值將以一個表格的形式顯示在頁面上。
<html>
<body>
<script language="javascript" type="text/javascript">
var mynumber = prompt("enter the number to be rounded","");
document.write("<h3>the number you entered was " + mynumber + "</h3><br>");
document.write("<p>the rounding results for this number are</p>");
document.write("<table width=150 border=1>");
document.write("<tr><th>method</th><th>result</th></tr>");
document.write("<tr><td>parseint()</td><td>"+ parseint(mynumber)
+"</td></tr>");
document.write("<tr><td>ceil()</td><td>" + math.ceil(mynumber)
+ "</td></tr>");
document.write("<tr><td>floor()</td><td>"+ math.floor(mynumber)
+ "</td></tr>");
document.write("<tr><td>round()</td><td>" + math.round(mynumber)
+ "</td></tr>");
document.write("</table>")
</script>
</body>
</html>
將以上代碼保存為ch4_examp3.htm,并在瀏覽器中打開該文件。在提示框中輸入一個數值,如12.354,然后單擊提示框的ok按鈕。在提示框中輸入的數值將作為參數分別傳入parseint()函數、ceil()方法、 floor()方法和round()方法,各方法取整的結果將用html格式化成一個表格形式,如圖4-1所示。

圖 4-1
代碼解說
在上面的代碼中,首先使用一個提示框提示用戶輸入一個數值:
var mynumber = prompt("enter the number to be rounded","");
然后,將用戶輸入的數值顯示在頁面上以作參考,并輸出一行描述信息:
document.write("<h3>the number you entered was " + mynumber + "</h3><br>");
document.write("<p>the rounding results for this number are</p>");
注意,在document.write()方法中,使用了html標記來格式化輸出的內容。對于主標題,使用了<h3>標記,對于表格的描述信息,使用了段落標記<p>。
下面的代碼則用于創建一個表格,以顯示各方法取整的結果:
document.write("<table width=150 border=1>");
document.write("<tr><th>method</th><th>result</th></tr>");
document.write("<tr><td>parseint()</td><td>"+ parseint(mynumber)
+ "</td></tr>");
document.write("<tr><td>ceil()</td><td>" + math.ceil(mynumber)
+ "</td></tr>");
document.write("<tr><td>floor()</td><td>"+ math.floor(mynumber)
+ "</td></tr>");
document.write("<tr><td>round()</td><td>" + math.round(mynumber)
+ "</td></tr>");
document.write("</table>")
對于表格,首先創建了一個表頭,然后對于每一個取整方法,使用了獨立的一行來顯示??梢钥吹?,在javascript代碼中,動態地創建web頁面的html標記是很容易的。動態地創建html標記的原則與在web頁面中使用html標記時是一樣的:html標記的語法必須是有效的,否則頁面上將顯示出一些錯誤的信息或者什么都不顯示。對于表格的每一行,創建的方法都是相同的,只是使用了不同的取整方法。對于表格的第一行,使用了parseint()函數,代碼如下所示:
document.write("<tr><td>parseint()</td><td>"+ parseint(mynumber)
+ "</td></tr>");
在向頁面輸出的document.write()方法中,首先使用了<tr>標記來創建表格的行,然后,使用<td>標記創建了一個表格單元,并將用于取整的方法名稱parseint()顯示在表格單元中,最后以</td>標記來結束這個單元格。接著用另一個<tr>標記創建第二個單元格,并將parseint()函數取整之后的結果放在第二個單元格中,最后以</td>標記結束第二個單元格,以</tr>標記結束這個表格行。盡管parseint()函數的返回值是數值類型,但是當它與字符串類型連接在一起時,javascript將把parseint()函數的返回值自動轉換為字符串類型,并與其他字符串連接在一起。這個轉換是javascript在后臺自動實現的,無須我們關心。
新聞熱點
疑難解答