JavaScript 提供了两种将非数字原语转换为数字的方法: parseInt() 和 parseFloat() 。您可能已经猜到了,前者将值转换为整数,而后者将值转换为浮点数。
字符串中包含的任何数字文字也被正确转换,因此字符串 "0xA" 被正确转换为数字 10。但是,字符串 "22.5" 将转换为 22 ,因为小数点对于整数来说是无效字符. 一些例子:
var iNum1 = parseInt("1234blue"); //返回 1234
var iNum2 = parseInt("0xA"); //返回10
var iNum3 = parseInt("22.5"); //返回22
var iNum4 = parseInt("蓝色"); //返回NaN
parseInt() 方法还具有基数模式,允许您将二进制、八进制、十六进制或任何其他基数的字符串转换为整数。基数被指定为 parseInt() 的第二个参数,因此解析十六进制值的调用如下所示:
var iNum1 = parseInt("AF", 16); //返回 175
当然,也可以对二进制、八进制甚至十进制(这是默认模式)执行此操作:
var iNum1 = parseInt("10", 2); //返回2
var iNum2 = parseInt("10", 8); //返回 8
var iNum2 = parseInt("10", 10); //返回10
如果十进制数字包含前导零,最好将基数指定为 10,这样您就不会意外地得到八进制值。例如:
var iNum1 = parseInt("010"); //返回 8
var iNum2 = parseInt("010", 8); //返回 8
var iNum3 = parseInt("010", 10); //返回10
在这段代码中,两行都将字符串“010”解析为一个数字。第一行认为该字符串是一个八进制值,并以与第二行相同的方式解析它(将基数指定为 8)。最后一行指定基数为 10,因此 iNum3 最终等于 10。
使用 parseFloat() 时的另一个区别是字符串必须以十进制形式表示浮点数,而不是八进制或十六进制。此方法忽略前导零,因此八进制数 0908 将被解析为 908 ,十六进制数 0xA 将返回 NaN 因为 x 不是浮点数的有效字符。parseFloat() 也没有基数模式。
使用 parseFloat() 的一些示例:
var fNum1 = parseFloat("1234blue"); //返回 1234
var fNum2 = parseFloat("0xA"); //返回0
var fNum3 = parseFloat("22.5"); //返回 22.5
var fNum4 = parseFloat("22.34.5"); //返回 22.34
var fNum5 = parseFloat("0908"); //返回 908
var fNum6 = parseFloat("蓝色"); //返回NaN
阅读更多,
阅读更多
类似问题在这里阅读更多