parseint提取整数,遇小数点即停;parsefloat解析浮点数,可跨过首个小数点继续读;前者支持进制转换,后者仅十进制且兼容科学计数法。

核心差异在于:parseInt 提取整数部分,parseFloat 解析浮点数;前者遇到小数点就停,后者能跨过第一个小数点继续读。
解析目标不同:整数 vs 浮点数
parseInt 专为整数设计,只要开始解析,就会一路取到第一个非数字字符(含小数点)为止,结果一定是整数。比如:
- parseInt("123.45") → 123(小数点被当作“停止信号”)
- parseInt("42px") → 42("px" 被丢弃)
- parseInt(".5") → NaN(开头不是数字或符号,无法启动解析)
parseFloat 则以浮点数为目标,会识别并接纳第一个小数点,继续解析后续数字,直到第二个小数点或非法字符出现:
- parseFloat("123.45") → 123.45
- parseFloat("42px") → 42(同 parseInt,但能处理 ".5"、"+1.2e3" 等格式)
- parseFloat(".5") → 0.5(支持省略整数位的小数写法)
- parseFloat("123.45.67") → 123.45(第二个小数点终止解析)
进制支持与基数参数
parseInt 支持指定进制(radix),这是它独有的能力:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- parseInt("10", 2) → 2(二进制字符串转十进制)
- parseInt("FF", 16) → 255(十六进制)
- 不传 radix 时行为不稳定:旧版浏览器可能把 "010" 当作八进制(得 8),所以强烈建议始终显式传入 10,例如 parseInt("010", 10)
parseFloat 没有 radix 参数,永远按十进制解析,也不识别 "0x" 或 "0b" 前缀。
对无效输入和边界情况的响应
两者都忽略开头空格,也都对非数字开头的字符串返回 NaN:
- parseInt(" abc")、parseFloat(" abc") → 都是 NaN
- parseInt("")、parseFloat("") → 都是 NaN(注意:Number("") 是 0,这点很不同)
- parseInt(" 42")、parseFloat(" 42.5") → 分别得 42 和 42.5
但 parseFloat 更宽容一些:它能处理科学计数法(如 "1.2e+3" → 1200),也能接受 "+", "-" 开头;而 parseInt 对 "+" 单独出现(如 "+42")可识别,但对 "e" 或指数形式直接截断或返回 NaN。
实际选型建议
按用途决定用哪个:
- 提取 ID、列表索引、数量等必须是整数的值 → 用 parseInt(str, 10)
- 解析价格、尺寸、坐标、用户输入的带小数的数值 → 用 parseFloat(str)
- 如果需要严格校验整个字符串是否合法数字(不能容忍尾部乱码),不要依赖它们——改用 Number(str) 或正则预检
- 涉及精度敏感计算(如金额)时,parseFloat 返回的是 IEEE 754 双精度值,存在舍入误差,建议用字符串或整数单位(如“分”)处理
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










