parseInt() 把字符串转化为整数,可设进制
parseFloat() 把字符串转化为浮点数,必须是十进制
注意要点:
1. 从左往右,如果从位置0起不是有效数字,就返回NaN
解决方法:
//提取字符串中所有数字 CBTC.CLang.getStringNum=function(str){ var nums=str.match(/[0-9]/g); return nums.join(""); } var s="sdfad0sa7f8"; var re=CBTC.CLang.getStringNum(s); alert(re); //078 alert(parseInt(re,10)); //78
2. 自动根据起始字符判断进制,自动得让人找不到bug在哪儿
如上例中,re为078
如果alert(parseInt(re)),显示7 解释为八进制,"8"为非数字字符
再如,parseInt("0xA"); 显示10
alert(parseInt("012"));显示10 把字符串按八进制理解,转化为10进制输出
解决方法:
显示设置进制,不让它自动理解
3.parseFloat函数认为,第一个出现的小数点也是有效字符,第二个小数点为无效字符
4.因为parseFloat不考虑其它进制,前导0忽略
5.JS虽然是弱类型的,但也不能乱搞
alert(parseInt("012.2",10)); //字符串,随便写,我都认 alert(parseInt(012.2,10)); //你给哥搞成这样,就等出错吧