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
阅读更多 http://www.bennadel.com/blog/2012-Exploring-Javascript-s-parseInt-And-parseFloat-Functions.htm,
阅读更多 http://www.java-samples.com/showtutorial.php?tutorialid=818
类似问题在这里阅读更多内容 https://stackoverflow.com/questions/9528433/behavior-difference-between-parseint-and-parsefloat