parseInt
基本操作
可以把字符串转化成整数。如果参数不是字符串,则会先转为字符串再转换。
console.log(parseInt('12px')); //12
console.log(parseInt('px')); //NaN
console.log(parseInt(true)); //NaN
console.log(parseInt('')); //NaN
//如果字符串头部有空格,自动去除
console.log(parseInt(' 1')); //1
//如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN
console.log(parseInt('.12')); //NaN
console.log(parseInt('+')); //NaN
console.log(parseInt('+1')); //1
parseInt
会将字符串中科学计数法的表示方法省略,只保留数字。
console.log(parseInt(1e+5)); //100000
console.log(parseInt('1e+5')); //1
自动转换为科学计数法的数字,parseInt
会将科学计数法的表示方法视为字符串。
console.log(parseInt('1234567890123456789012')); //1.2345678901234568e+21
console.log(parseInt(1234567890123456789012)); //1 先将数字转换为字符串
//等同于
console.log(parseInt('1.2345678901234568e+21')); //1
进制转换
语法:parseInt(string,radix)
其中string为必需,表示要被解析的字符串。如果传入的参数不是string,会先转换为字符串。
radix为可选,表示要解析的数字的进制。当没有设置该参数时,如果string以0x开头,那么radix默认为16;否则radix默认为10。
console.log(parseInt('0x123'));//291
console.log(parseInt('0x123', 16)); //291
如果radix
不是数值,会被自动转为一个整数,这个整数只有在2到36之间,才能得到有意义的结果,超出这个范围,则返回NaN
。如果第二个参数是0
、undefined
、null
,则直接忽略不计。
console.log(parseInt('11', 36)); //37
console.log(parseInt('11', 1)); //NaN
console.log(parseInt('11', 37)); //NaN
console.log(parseInt('11', 0)); //11
console.log(parseInt('11', null)); //11
console.log(parseInt('11', undefined)); //11
如果第一个参数中包含对于指定进制无意义的字符,则从最高位开始,只返回可以转换的数值。如果最高位无法转换,则返回NaN
console.log(parseInt('12345', 2)); //1
console.log(parseInt('54321', 2)); //NaN
parseFloat
把字符串转换成浮点数。
parseFloat()与parseInt非常相似,不同之处在于:
- parseFloat会解析第一个小数点
- parseFloat不支持第二个参数,只能解析十进制数
- 如果解析的内容里只有整数,解析成整数
- 如果字符串符合科学计数法,则会进行相应的转换
console.log(parseFloat('20.22')); //20.22
console.log(parseFloat('20.22.22')); //20.22
console.log(parseFloat('1e-5')); //0.00005
console.log(parseFloat('1e+5')); //100000