2.3.4 分析整数和浮点数

JavaScript和许多其他程序设计语言的一个不同之处是JavaScript在声明变量时不区分整数和浮点数。当用户在网页提示中录入数字时,JavaScript将把这个数字处理为文本。当要对这个数字执行计算或数学运算时,必须告诉JavaScript它是数字。要做这件事,可以使用两个重要的内置函数:parseInt()和parseFloat()。当把一个变量名放入这些函数的圆括号内时,这个变量将转换为一个整数或浮点数。例2.12展示这些函数的用法。

例2.12 使用parseInt() 以下程序提示用户录入一个整数,并且存储在变量num中,然后显示3个数:

当运行时,若用户在提示时录入7,则显示:

这些显示是可以解释的。第5行提示用户录入一个数字,录入的7作为文本存储在变量num中。这样,当运行第6行时,显示num的文本值(7),然后与2连接,然后是一个强制分行,最终显示72。

然而,第7行的函数parseInt()用于将num的数据类型转换为整数。既然num是整数,那么操作符+就成为加操作符,从而2加上num的值,其结果是9。

既然num已经是一个整数,那么它就能在第8行用做数字,乘以3,得到数字结果21。

例2.12使用操作符+的两种功能,即加操作符和连接操作符。很明显,当用于连接文本变量时,没有冲突。JavaScript简单地把+用做连接操作符,从而一个接一个地显示变量的值。然而,当需要把+用做加操作符时,必须保证把操作的数字处理为数字类型,做法是使用parseInt()和parseFloat(),并把操作的数字放入在圆括号内。

最后,由于JavaScript不区分整数和浮点数,所以parseInt()和parseFloat()有什么不同呢?

假定str是string变量,那么:

·parseInt(str)在字符串(str)中找到第一个整数,将它转换为一个整数值并作为返回值。它只返回在字符串中找到的第一个整数。

·parseFloat(str)在字符串(str)中找到第一个浮点数,将它转换为一个浮点值并作为返回值。与parseInt()不同,它也识别小数部分。

如果字符串的第一个字符不是一个数字,那么这两个函数都返回一个非数字值NaN。例2.13说明parseInt()和parseFloat()之间的不同。

例2.13 parseInt()或parseFloat()

当运行时,若用户在提示中录入7,则显示:

然而,若用户录入7.893,则显示:

若用户录入7.893Hello!,则忽略最后一个数字后面的文本,并且显示:

最后,若用户录入Heno!7.893Heno!,则由于第一个字符不是数字,所以显示:

如果要求用户输入数字,并且能够确信输入的数字值必须是整数值,那么就使用函数parseInt()。然而,这个函数将截除用户输入的小数部分。如果需要小数部分,那么就使用parseFloat()。

2.3节检查点

2.9 求下列每个表达式的值:

a)14%3

b)7%6

c)(5+(11%11))*5

d)8+25%3

2.10 若X=2和Y=3,则给出下列每个表达式的值:

a)(2*X-1)%2+Y

b)X*Y+10*X/(7-Y)

c)(4+(12%Y))*(X+1)/Y

d)4*Y/X*2

2.11 以下代码段将显示下列哪个信息?(注:假定document.write()语句能够显示单词之间的空格。)

a)Morrisis acat.

b)Morris is a cat.

2.12 描述符号+在JavaScript中的两种用途。

2.13 parseInt()和parseFloat()之间的主要不同是什么?

2.14 假定你正在为一个网上商店编写脚本,计算商品的销售价。编写一个脚本,让用户录入折扣百分比,并且将百分比转换为一个小数。然后,在要求用户录入商品价格之后,计算它的销售价并且显示它。