閱讀本文前,請(qǐng)先閱讀:math對(duì)象應(yīng)用詳解
random()方法用于返回一個(gè)0~1之間的隨機(jī)數(shù),包含0但不包括1;pow()方法用于計(jì)算一個(gè)數(shù)的指定冪,通常具有pow(n,m)的形式。
random()方法用于返回一個(gè)0~1之間的隨機(jī)數(shù),包含0但不包括1。如果要用javascript編寫(xiě)動(dòng)態(tài)的圖形廣告標(biāo)語(yǔ),則random()方法非常有用。
下面的例子可模擬擲骰子的游戲。下列代碼將在頁(yè)面上顯示10個(gè)隨機(jī)數(shù),單擊瀏覽器的刷新按鈕,頁(yè)面將顯示一組新的隨機(jī)數(shù):
<html>
<body>
<script language="javascript" type="text/javascript">
var throwcount;
var dicethrow;
for (throwcount = 0; throwcount < 10; throwcount++)
{
dicethrow = (math.floor(math.random() * 6) + 1);
document.write(dicethrow + "<br>");
}
</script>
</body>
</html>
我們希望dicethrow的值在1~6之間,但是,random()方法的返回值是0~1(不包含1)之間的一個(gè)隨機(jī)的浮點(diǎn)數(shù)。為了獲得一個(gè)1~6(包含6)的隨機(jī)整數(shù),先把random()方法的返回值乘以6,以得到一個(gè)0~6(不包含6)的隨機(jī)數(shù),然后再把該隨機(jī)數(shù)加1,就得到一個(gè)1~7(不包含7)的隨機(jī)數(shù),接著再用floor()方法進(jìn)行取整,便得到一個(gè)1~6(包含6)的隨機(jī)整數(shù)。
如果想獲得1~100的隨機(jī)數(shù),只須將代碼math.random()*6 修改為math.random()*100即可。
pow()方法用于計(jì)算一個(gè)數(shù)的指定冪,通常具有pow(n,m)的形式。它具有兩個(gè)參數(shù),第一個(gè)參數(shù)n表示用于求冪的底數(shù),第二個(gè)參數(shù)表示冪。例如:math.pow(2,8)表示2的8次冪,即 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2的值—— 結(jié)果為256。與其他的算術(shù)運(yùn)算不同,pow()方法、sin()方法、cos()方法和acos()等方法在web程序設(shè)計(jì)中并不常用。如果應(yīng)用程序中需要進(jìn)行科學(xué)計(jì)算,則pow()方法非常有用。
在下面這個(gè)例子中,我們使用pow()方法編寫(xiě)了一個(gè)fix()函數(shù),用于返回一個(gè)定點(diǎn)小數(shù)位的數(shù)字。在早期的瀏覽器中并沒(méi)有提供實(shí)現(xiàn)這個(gè)功能的函數(shù),而在jscript 5.5和javascript 1.5中,已經(jīng)增加了一個(gè)實(shí)現(xiàn)該功能的方法,這正是在下一小節(jié)中我們將介紹的tofixed()方法。本示例說(shuō)明,當(dāng)需要使用javascript中沒(méi)有提供的函數(shù)時(shí),可以利用現(xiàn)有的函數(shù)來(lái)編寫(xiě)所需要的函數(shù)功能。
<html>
<head>
<script language="javascript" type="text/javascript">
function fix(fixnumber, decimalplaces)
{
var div = math.pow(10,decimalplaces);
fixnumber = math.round(fixnumber * div) / div;
return fixnumber;
}
</script>
</head>
<body>
<script language="javascript" type="text/javascript">
var number1 = prompt("enter the number with decimal places you want to
fix","");
var number2 = prompt("how many decimal places do you want?","");
document.write(number1 + " fixed to " + number2 + " decimal places is: ");
document.write(fix(number1,number2));
</script>
</body>
</html>
將上面的代碼保存為 ch4_examp4.htm。在瀏覽器中打開(kāi)該頁(yè)面,將會(huì)看到兩個(gè)提示對(duì)話(huà)框。在第一個(gè)提示框中,輸入一個(gè)需要進(jìn)行定點(diǎn)小數(shù)位處理的數(shù)字,例如輸入2.2345。在第二個(gè)提示框中,輸入需要定點(diǎn)的小數(shù)的位數(shù),例如輸入2。程序?qū)演斎氲臄?shù)值進(jìn)行定點(diǎn)處理后的結(jié)果顯示在頁(yè)面上。如圖4-2所示,對(duì)于我們輸入的2.2345,結(jié)果將是2.23。

圖 4-2
代碼解說(shuō)
在上面的代碼中,在頁(yè)面代碼的頭部定義了fix()函數(shù)。fix()函數(shù)具有兩個(gè)參數(shù):fixnumber和decimalplaces,其中,decimalplaces參數(shù)指出了定點(diǎn)后小數(shù)點(diǎn)之后的位數(shù)。例如,把34.76459定點(diǎn)為具有3個(gè)小數(shù)位的數(shù)字,結(jié)果為34.765。
在fix()函數(shù)中的第一行,把變量div的值設(shè)置為10的decimalplaces次冪,decimalplaces參數(shù)就是用于定點(diǎn)的小數(shù)點(diǎn)的位數(shù)。
function fix(fixnumber, decimalplaces)
{
var div = math.pow(10,decimalplaces);
下面這行代碼用于計(jì)算定點(diǎn)之后的數(shù)值:
fixnumber = math.round(fixnumber * div) / div;
表達(dá)式math.round(fixnumber * div)的作用就是將小數(shù)點(diǎn)移動(dòng)到需要保留的位數(shù)之后。例如對(duì)于2.2345,如果我們需要保留小數(shù)點(diǎn)之后的兩位數(shù),可以將它轉(zhuǎn)換為223.45。然后,再用math.round()方法對(duì)轉(zhuǎn)換后的數(shù)值進(jìn)行四舍五入,就可以得到一個(gè)去掉多余小數(shù)部分后最近似于該數(shù)的整數(shù),對(duì)223.45來(lái)說(shuō),四舍五入的結(jié)果就是223。
然后,再把這個(gè)整數(shù)除以變量div,將它轉(zhuǎn)換回相應(yīng)的小數(shù),這樣,僅有指定的小數(shù)位被保留了下來(lái)。例如對(duì)于223,將它除以100,將得到2.23。這就是將2.2345定點(diǎn)為具有2個(gè)小數(shù)位的數(shù)字的結(jié)果。通過(guò)return語(yǔ)句,可以把這個(gè)值返回給調(diào)用方。
return fixnumber;
}
在頁(yè)面的代碼中,使用了兩個(gè)prompt()提示框獲取用戶(hù)的輸入,然后用document.write()方法將取定點(diǎn)數(shù)之后的結(jié)果輸出在頁(yè)面上。
新聞熱點(diǎn)
疑難解答
圖片精選