random()方法和pow()方法
阅读本文前,请先阅读:Math对象应用详解
random()方法用于返回一个0~1之间的随机数,包含0但不包括1;pow()方法用于计算一个数的指定幂,通常具有pow(n,m)的形式。
random()方法
random()方法用于返回一个0~1之间的随机数,包含0但不包括1。如果要用JavaScript编写动态的图形广告标语,则random()方法非常有用。
下面的例子可模拟掷骰子的游戏。下列代码将在页面上显示10个随机数,单击浏览器的刷新按钮,页面将显示一组新的随机数:
<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)之间的一个随机的浮点数。为了获得一个1~6(包含6)的随机整数,先把random()方法的返回值乘以6,以得到一个0~6(不包含6)的随机数,然后再把该随机数加1,就得到一个1~7(不包含7)的随机数,接着再用floor()方法进行取整,便得到一个1~6(包含6)的随机整数。
如果想获得1~100的随机数,只须将代码Math.random()*6 修改为Math.random()*100即可。
pow()方法
pow()方法用于计算一个数的指定幂,通常具有pow(n,m)的形式。它具有两个参数,第一个参数n表示用于求幂的底数,第二个参数表示幂。例如:Math.pow(2,8)表示2的8次幂,即 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2的值—— 结果为256。与其他的算术运算不同,pow()方法、sin()方法、cos()方法和acos()等方法在Web程序设计中并不常用。如果应用程序中需要进行科学计算,则pow()方法非常有用。
在下面这个例子中,我们使用pow()方法编写了一个fix()函数,用于返回一个定点小数位的数字。在早期的浏览器中并没有提供实现这个功能的函数,而在JScript 5.5和JavaScript 1.5中,已经增加了一个实现该功能的方法,这正是在下一小节中我们将介绍的toFixed()方法。本示例说明,当需要使用JavaScript中没有提供的函数时,可以利用现有的函数来编写所需要的函数功能。
<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。在浏览器中打开该页面,将会看到两个提示对话框。在第一个提示框中,输入一个需要进行定点小数位处理的数字,例如输入2.2345。在第二个提示框中,输入需要定点的小数的位数,例如输入2。程序将把输入的数值进行定点处理后的结果显示在页面上。如图4-2所示,对于我们输入的2.2345,结果将是2.23。
图 4-2
代码解说
在上面的代码中,在页面代码的头部定义了fix()函数。fix()函数具有两个参数:fixNumber和decimalPlaces,其中,decimalPlaces参数指出了定点后小数点之后的位数。例如,把34.76459定点为具有3个小数位的数字,结果为34.765。
在fix()函数中的第一行,把变量div的值设置为10的decimalPlaces次幂,decimalPlaces参数就是用于定点的小数点的位数。
function fix(fixNumber, decimalPlaces)
{
var div = Math.pow(10,decimalPlaces);
下面这行代码用于计算定点之后的数值:
fixNumber = Math.round(fixNumber * div) / div;
表达式Math.round(fixNumber * div)的作用就是将小数点移动到需要保留的位数之后。例如对于2.2345,如果我们需要保留小数点之后的两位数,可以将它转换为223.45。然后,再用Math.round()方法对转换后的数值进行四舍五入,就可以得到一个去掉多余小数部分后最近似于该数的整数,对223.45来说,四舍五入的结果就是223。
然后,再把这个整数除以变量div,将它转换回相应的小数,这样,仅有指定的小数位被保留了下来。例如对于223,将它除以100,将得到2.23。这就是将2.2345定点为具有2个小数位的数字的结果。通过return语句,可以把这个值返回给调用方。
return fixNumber;
}
在页面的代码中,使用了两个prompt()提示框获取用户的输入,然后用document.write()方法将取定点数之后的结果输出在页面上。