2.1.1 数值型
数值型(number)是JavaScript中最基本的数据类型。与其他程序设计语言(如C和Java)中数值型不同的是,JavaScript中的数值型并不区别整型数值和浮点型数值。在JavaScript中,所有的数值都是由浮点型表示的。JavaScript采用IEEE 754标准定义的64位浮点格式表示数字,这意味着它能表示的最大值是±1.7976931348623157e+308,最小值是5e-324。
当一个数字直接出现在JavaScript程序中时,称之为数值直接量(numericliteral)。JavaScript支持数值直接量的形式有几种,下面将对这几种形式进行详细介绍。
注意
在任何数值直接量前加负号(-)可以构成它的负数。注意,负号是一元求反运算符,不是数值直接量语法的一部分。
1.十进制
在JavaScript程序中,十进制的整数是一个由0~9的数字组成的数字序列。例如:
0 10 -3 108
JavaScript的数字格式允许精确地表示-900719925474092(-253)~900719925474092(253)的所有整数,其中包括-900719925474092(-253)和900719925474092(253)。若使用超过这个范围的整数,就会失去尾数的精确性。需要注意的是,JavaScript中的某些整数运算是对32位的整数执行的,它们的范围为-2147483648(-231)~2147483647(231-1)。
2.十六进制
JavaScript不但能够处理十进制的整型数据,还能识别十六进制(以16为基数)的数据。十六进制的数据是以0X或0x开头,其后跟随十六进制的数字序列。十六进制的数字可以是0~9的某个数字,也可以是a(A)~f(F)的某个字母,用来表示0~15(包括0和15)的某个值。例如:
0xff 0X123456 0xBCDE765
3.八进制
尽管ECMAScript标准不支持八进制数据,但是JavaScript的某些实现却允许采用八进制(基数为8)的整型数据。八进制数据以数字0开头,其后跟随一个数字序列,这个序列中的每个数字的取值范围都为0~7(包括0和7)。例如:
03 0576
由于JavaScript的某些实现支持八进制数据,而有些实现则不支持,因此最好不要使用以0开头的整型数据,其原因在于,不知道JavaScript的某个实现是将其解释为十进制数据还是八进制数据。
【例2.1】输出红、绿、蓝3种颜色的色值。(实例位置:资源包\TM\sl\2\01)
网页中的RGB颜色代码是以十六进制数字表示的。例如,在颜色代码#6699FF中,十六进制数字66表示红色部分的色值;十六进制数字99表示绿色部分的色值;十六进制数字FF表示蓝色部分的色值。在页面中分别输出RGB颜色#EE567C的3种颜色的色值,代码如下。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>输出红、绿、蓝3种颜色的色值</title> </head> <body> <script type="text/javascript"> document.write("RGB颜色#EE567C的3种颜色的色值分别为:"); //输出字符串 document.write("<p>R:"+0xEE); //输出红色色值 document.write("<br>G:"+0x56); //输出绿色色值 document.write("<br>B:"+0x7C); //输出蓝色色值 </script> </body> </html>
执行上述代码,结果如图2.1所示。
图2.1 输出RGB颜色#EE567C的3种颜色的色值
4.浮点型数据
浮点型数据可以具有小数点,其表示方法有以下两种。
(1)传统记数法。传统记数法是将一个浮点数分为整数部分、小数点和小数部分,如果整数部分为0,则可以省略整数部分。例如:
1.236 56.76 .567
(2)科学记数法。使用科学记数法表示浮点型数据,即实数后跟随字母e或E,后面加上一个带正号或负号的整数指数,其中正号可以省略。例如:
6e+5 3.26e10 1.234E-3
说明
在科学记数法中,e(或E)后面的整数表示10的指数次幂,即这种记数法表示的数值等于前面的实数乘以10的指数次幂。
【例2.2】输出科学记数法表示的浮点数。(实例位置:资源包\TM\sl\2\02)
输出2e+3、5.6e7、1.365E-2表示的浮点数,代码如下。
<script type="text/javascript"> document.write("科学记数法表示的浮点数的输出结果:"); //输出字符串 document.write("<p>"); //输出段落标记 document.write(2e+3); //输出浮点数 document.write("<br>"); //输出换行标记 document.write(5.6e7); //输出浮点数 document.write("<br>"); //输出换行标记 document.write(1.365E-2); //输出浮点数 </script>
执行上述代码,结果如图2.2所示。
图2.2 输出科学记数法表示的浮点数
5.特殊值Infinity
在JavaScript中有一个特殊的数值——Infinity(无穷),如果一个数值超出了JavaScript所能表示的最大值的范围,那么就会输出Infinity;如果一个数值超出了JavaScript所能表示的最小值的范围,那么就会输出-Infinity。例如:
document.write(1/0); //输出1除以0的值 document.write("<br>"); //输出换行标记 document.write(-1/0); //输出-1除以0的值
运行结果如下。
Infinity -Infinity
6.特殊值NaN
JavaScript中还有一个特殊的数值——NaN(not a number的简写),即非数字。在进行数学运算时产生了未知的结果或错误,JavaScript就会返回NaN,表示该数学运算的结果不是一个数字。例如,用0除以0的输出结果就是NaN,代码如下。
alert(0/0); //输出0除以0的值
运行结果如下。
NaN