js 字符串转数字

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));     //你给哥搞成这样,就等出错吧



posted @ 2012-03-01 16:22  码农13  阅读(722)  评论(0编辑  收藏  举报