Java Script从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

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