parseint提取整数、支持进制;parsefloat提取浮点数、仅十进制;二者均从字符串开头解析至非法字符,推荐优先使用number()并校验nan与有限性。

parseInt 和 parseFloat 是 JavaScript 中用于将字符串转换为数字的两个常用函数,但它们的行为和适用场景不同,用错容易出问题。
parseInt:提取整数部分,支持进制指定
它从字符串开头开始解析,直到遇到无法识别的字符为止,只返回整数部分。默认按十进制解析,但可以传入第二个参数指定进制(如 2、8、16)。
- 如果字符串以空格或非数字字符开头,结果是 NaN
- 遇到小数点、字母等会立即停止,不四舍五入,也不继续读后面数字
- 省略第二个参数时,某些旧版浏览器可能把以
0开头的字符串当作八进制(已废弃),建议显式写10
示例:
parseInt("123abc") // 123<br>parseInt(" 45.67") // 45(忽略开头空格,遇到小数点停止)<br>parseInt("0xFF", 16) // 255(十六进制)<br>parseInt("10", 2) // 2(二进制)<br>parseInt("hello") // NaN
parseFloat:提取浮点数,只支持十进制
它同样从开头解析,但能识别小数点、正负号和科学计数法(如 e 或 E),直到非法字符为止,返回第一个找到的浮点数值。
- 不会识别进制,第二个参数会被忽略
- 允许开头有空格,但不能有其他非数字字符(除
+、-) - 只取第一个数,后续内容被丢弃
示例:
parseFloat("3.1415abc") // 3.1415<br>parseFloat(" -2.5e3xyz") // -2500(科学计数法有效)<br>parseFloat("12.34.56") // 12.34(第二个小数点非法,截断)<br>parseFloat("abc123") // NaN(开头不是数字或符号)
注意边界情况和更安全的替代方案
这两个函数对非字符串输入会先调用 toString(),可能产生意外结果(比如 parseInt(null) → NaN,parseInt([1,2]) → 1)。实际开发中推荐:
- 明确类型时优先用
Number(str),它更严格:空字符串转为0,无效字符串直接得NaN - 需要校验是否合法数字,可用
!isNaN(Number(str)) && isFinite(Number(str)) - 处理用户输入且需容错时,再考虑
parseInt/parseFloat,但务必检查返回值是否为NaN
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











