最近写代码发现parseIntparseFloat这两个方法长的好像啊,用法也很类似,不仔细看还以为同一个方法呢,仔细研究一下发现二者还是有区别的。建议大家静下心来好好学习一下!

一文搞懂parseInt和parseFloat用法和区别-QUI-Notes

不同点

定义上不同

parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
parseFloat(string) 解析一个字符串,并返回一个浮点数。

语法不同

parseInt中的radix为0或空时,会根据string判断数字的基数
如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
如果 string 以"0"为开始时旧的浏览器默认使用八进制基数。ECMAScript 5,默认的是十进制的基数。
parseFloat没有radix参数,默认以10进制为基数,从左往右逐字符解析。

返回值类型不同

parseInt返回的是十进制整数;
parseFloat返回的是十进制浮点数


共同点

0.二者都会逐字符解析,直到遇到无法解析的字符。
1.字符串中只返回第一个数字。
2.开头和结尾的空格是允许的。

3.如果字符串的第一个字符不能被转换为数字,都会返回NaN。

console.log(parseInt( null )) // NaN
console.log(parseInt( "0x1fa" )) //506
console.log(parseInt( "0x1fa",36 )) //1541494
console.log(parseInt( "1232.22" )) //1232
console.log(parseInt( "34 45 66" )) //34
console.log(parseInt( " 40 year " )) //40
console.log(parseInt( undefined )) // NaN
console.log( "---------" ) //40
console.log(parseFloat( "0x1fa" )) //0
console.log(parseFloat( null )) // NaN
console.log(parseFloat( "1232.22" )) //1232.22
console.log(parseFloat( "34 45 66" )) //34
console.log(parseFloat( " 40 year " )) //40
console.log(parseFloat( undefined ))  // NaN

注意:两者在使用前都需要判断是否为null