parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制。
比如说parseInt("010",10)就是10进制的结果:10,parseInt("010",2)就是2进制的结果:2,parseInt("010",8)就是8进制的结果:8,parseInt("010",16)就是16进制的结果:16。
下面我来说说没有指定进制单位的时候,默认是10进制,但:如果是里面的Number是0开头的就认为是8进制的,如果是0x开头的就认为是16进制的。
parseInt("10")==>parseInt("010",10)===>10
parseInt("010")==>parseInt("010",8)==>8
parseInt("0x10")==>parseInt("010",16)==>16.
parseInt(Number)如果中间的Number遇到不是数字(0-9)的就中断往下解析,就只取不是数字之前的值去运算:
比如parseInt("100x"),就相当于parseInt("100")===》parseInt("100",10)==>100,
又如parseInt("0100x")===>parseInt("0100")===>parseInt("100",8)===>64.
当如果第一个不是0且不是字符就认为是10进制,一切照旧执行,遇到字母就停下来。又当如果是第一个是0,如果是x就继续往下走,这里的x不代表数值,只能和前面的0一起
组成0x代表16进制的单位,后面的才按上面我们讲的遇到非数字停止解析的规则来。比如
parseInt("0xt")==>parseInt("0x")==>parseInt("",16)就是NaN了。
总结下,parseInt(Number)里面的值:
如果是第一位不是0就遇到字母就停止解析,并把字母前面的值作为10进制去解析,如果第一个就是字母那么值就是空,空成了NaN,比如:
parseInt("a")==>parseInt("",10)==>NaN.
parseInt("10a")==>parseInt("10")==>parseInt("10",10)==>10;
如果第一位是0,且第2位不是x也和上面一样遇到字母就停止解析,并把字母前面的值作为8进制去解析,比如:
parseInt("0a")==>parseInt("0")==>parseInt("0",10)==>0.
parseInt("010a")==>parseInt("010")==>parseInt("10",8)==>8;
如果第一位是0,且第2位是x那后面也和上面一样遇到字母就停止解析,并把字母前面的值作为16进制去解析,比如:
parseInt("0xt")==>parseInt("",16)==>NaN.
parseInt("0x12t")==>parseInt("12",16)==>18.
另外,如果要转化为2进制,即:parseInt("11",2); // 3
例如:parseFloat("2.1e4xyz")返回21000;而parseFloat("xyz")返回0。
JavaScript中parseFloat函数方法是返回由字符串转换得到的浮点数。 使用方法:
parseFloat(numString)其中numString 参数是包含浮点数的字符串。JavaScript中parseFloat函数方法返回与 numString 中保存的数相等的数字表示。如果 numString 的前缀
不能解释为浮点数,则返回 NaN (而不是数字)。
parseFloat("abc") // 返回 NaN。
parseFloat("1.2abc") // 返回 1.2。
这个方法一般和parseInt和parseFloat结合用于判断返回的值是不是数字?(不确定)。语法是:isNaN(testvalue);
isNaN(NaN);//ture
这里面需要注意的几个地方是,NaN,如果将NaN作为与一个数值计算,那么结果也一定是NaN.
可以用isInfinity判断是不是无穷,返回bollen值
isFinite(1/0); // false
isFinite(-Infinity); // false
isFinite(NaN); // false