5.8.2 数值处理函数
数值处理函数主要有:将其他类型转换为数值型(parseInt和parseFloat),判断变量是否是数值型(isNaN)。本节将介绍这三种处理函数。
·parseInt方法
parseInt方法将一个字符串指定的进制,转换成一个整数,其语法格式如下所示。
parseInt(numString,[radix]) |
参数“numString”是要进行转换的字符串。参数“radix”可选,是介于2~36之间的一个数值,用于指定进行字符串转换时所用的进制。如果没有指定参数“radix”,则前缀为“0x”的字符串被视为十六进制,前缀为“0”的字符串被视为八进制,所有其他字符串都被视为十进制。
要转换的字符串中可以包含非数字字符。如果其中包含无法转换成数字的字符,那么parseInt方法,只取这个字符前面的部分进行转换。例如parseInt("12abc")的返回结果为12。如果parseInt方法完全无法将一个字符串转换成数字,将返回NaN(not a number)。NaN需要使用isNaN方法才能检测出。
光盘文件5.22.htm的代码演示了上面介绍的一些常见知识,代码如下。通过运行测试结果。
<Script language="javascript"> <!-- //下面是同一个数用不同进制表示时在默认情况下的举例 document.write("默认情况下的结果:"); document.write("68:"+parseInt('68')); document.write(";068:"+parseInt('068')); document.write(";0x68:"+parseInt('0x68')+"<br>"); //下面是同一个数用不同进制表示时在转为2进制的举例 document.write("转为2进制的结果:"); document.write("68:"+parseInt('68',2)); document.write(";068:"+parseInt('068',2)); document.write(";0x68:"+parseInt('0x68',2)+"<br>"); //下面是同一个数用不同进制表示时在转为8进制的举例 document.write("转为8进制的结果:"); document.write("68:"+parseInt('68',8)); document.write(";068:"+parseInt('068',8)); document.write(";0x68:"+parseInt('0x68',8)+"<br>"); //下面是同一个数用不同进制表示时在转为18进制的举例 document.write("转为18进制的结果:"); document.write("68:"+parseInt('68',18)); document.write(";068:"+parseInt('068',18)); document.write(";0x68:"+parseInt('0x68',18)+"<p>"); //下面是对一个2进制数转换为不同进制的举例 document.write("11001010转换后的结果: "+"<br>"); document.write("2进制:"+parseInt('11001010',2)); document.write(";18进制:"+parseInt('11001010',18)+"<br>"); document.write("8进制:"+parseInt('11001010',8)); document.write(";10进制:"+parseInt('11001010',10)); //下面是对不全是数字情况下转换的举例 document.write("<p>43abc转换后:"+parseInt('43abc')); document.write(";abc43转换后:"+parseInt('abc43')); document.write(";abc转换后:"+parseInt('abc')); //--> </script> |
程序的运行结果如图5.22所示。
|
| 图5.22 5.22.htm的运行结果 |
·parseFloat方法
parseFloat方法将一个字符串转换成对应的小数。如下面的代码中,由于tempStr是一个字符串“2.8”,表达式tempStr +1中的加号(+)表示把字符串2.8与整数1相连成一个新的字符串,即“2.81”。而parseFloat(tempStr)将tempStr转换成了一个小数,这时parseFloat(tempStr)+1中的加号(+)表示两个数值的相加,对应的结果就是3.8。
<Script language="javascript"> <!-- var tempStr="2.8"; alert((tempStr +1)+"\n"+(parseFloat(tempStr)+1)); //转换并输出 //--> </script> |
脚本程序执行的结果如图5.23所示。
|
| 图5. 23 执行结果 |
·isNaN方法
isNaN方法用于检测parseInt和parseFloat方法的返回值是否为NaN。如果是isNaN返回值为true,否则返回false。光盘文件5.23.htm是一个isNaN方法应用的例子,代码如下。
<Script language="javascript"> <!-- var str = parseInt('xyz468'); //parseInt方法应用后的结果赋值给a if(isNaN(str)){ //如果str不是数值,执行下面的语句,否则下面语句不会执行 alert("转换后的结果是"+parseInt(' xyz468')); } //--> </script> |
程序运行的结果如图5.24所示。
|
| 图5.24 5.23.htm的运行结果 |