前言
Math对象用于进行数学运算。其属性是数学中一些常见的常数值,在程序中可以直接使用。Math对象的方法很多,主要完成一些常见的数学运算,如三角函数计算、乘方、开方、求对数等。在 Math 对象的方法中,除了random()之外的所有方法都需要一个或几个参数,并且其用法基本相同。本章通过两个示例介绍这些方法的使用。由于random()方法用于产生随机数,可以用在很多地方,将在其他章节举例。
4.1 求平方根
本节给出一段求平方根的示例代码,可以实现对整数、负数进行求平方根。并且,当用户输入的内容不是数值时,还可以进行验证。
要点
本节代码主要使用了Math对象的sqrt(n)和abs(n)方法,主要功能和用法如下。
- sqrt(n)方法用于求一个非负数的平方根,参数n用于指定要进行运算的数值。
- abs(n)方法用于求一个数值的绝对值,参数n指定要进行运算的数值。
- 两个方法分别使用 Math.sqrt(n)和 Math.abs(n)调用。
<html>
<head>
<title>求平方根</title>
</head>
<body>
<h1>求平方根示例</h1>
<p>本程序要求用户输入一个数值,单击“确定”后求出该数的平方根。</p>
<form id="form1">
<input type="text" id="Num" name="Num" size="20" value="请在这里输入一个数!">
<input type="button" value="算一下" onclick="NumSubmit();">
</form>
<script language="JavaScript">
<!--
function NumSubmit() //函数,用来求出平方根
{
InputNum=form1.Num.value; //将输入的内容存储在变量InputNum中
if(isNaN(InputNum)) //如果输入的内容不是数值
{
alert("没有输入数值!")
}
else //如果输入了数值
{
var str1="的平方根是:\n\n"; //定义一个字符串变量
var Num1,Num2; //定义两个变量,备用
if(InputNum>=0) //如果输入的是一个正数
{
Num1="+"+Math.sqrt(InputNum)+"\n\n" //Num1存储正根
Num2="-"+Math.sqrt(InputNum) //Num2存储负根
alert(InputNum+str1+Num1+Num2);
}
else //如果输入了一个负值
{
if(InputNum==-1) //如果输入了-1
{
Num1="+i\n\n"; //Num1存储正根
Num2="-i"; //Num1存储正根
alert(InputNum+str1+Num1+Num2);
}
else //如果输入了其他负值
{
var k=Math.abs(InputNum); //使用变量k存储该输入值的绝对值
Num1="+"+Math.sqrt(k)+"i\n\n"; //Num1存储正根
Num2="-"+Math.sqrt(k)+"i"; //Num1存储正根
alert(InputNum+str1+Num1+Num2);
}
}
}
}
//-->
</script>
</body>
</html>
分析
- (1)程序使用一个文本框输入数值,并通过一个提交按钮的onclick方法调用函数NumSubmit(),用以求出输入数值的平方根。
- (2)在NumSubmit()函数中,首先通过文本框的value 属性调用用户的输入内容,并将其存入 InputNum 变量中;随后,对用户输入内容分多种情况进行处理:非数值、非负数、-1或其他负值。
- (3)在分情况处理数据时,使用了if...else语句的嵌套形式,也可以使用switch 语句直接对不同情况进行处理。
4.2 求质数
本节给出一个求质数的方法,可以求出用户输入数值以内的所有质数。当用户输入的值较小或输入非数值时,可以进行验证。
要点
代码使用筛选法求质数,主要使用了NaN这一特殊的数值、isNaN()方法和Math对象的sqrt(n)方法。
- NaN 是一个特殊值,含义是“notanumber”。NaN是惟一一个不可以和自身进行比较的值。使用 isNaN()方法或让某个值与其自身相比较,可以确定一个值是否是NaN。isNaN()方法的结果是一个逻辑值,因此,可以直接在条件语句中使用,在本例中,使用该方法判断数组的元素是否是数值。使用数组 Num[]存储0到指定数值的整数,这一过程通过遍历数组元素,并为其赋与下标相同的整数值来实现。
- 在JavaScript中,数组下标从0开始。由于0和1不是质数,首先将数组的前两个元素重新赋值为 NaN。
- 应用筛选法求质数。从2开始,由于“任何数的倍数都不是质数”,因此,从2开始到指定数的开方为止,每个数与其后所有数的乘积都不是质数&#x