You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么JavaScript的parseInt(0.0000005)执行后会输出5?

运行结果原因分析
  • parseInt的核心执行逻辑有两个关键步骤:
    1. 如果传入的第一个参数不是字符串类型,会先调用toString()方法将其强制转换为字符串,再执行解析
    2. 从字符串的首字符开始匹配数字,遇到第一个非数字字符就立即停止解析,返回前面匹配到的整数内容,无匹配结果则返回NaN
  • 浮点数转字符串的规则差异是导致结果异常的核心原因:
    1. 当小于1的浮点数大于等于1e-6(即0.000001)时,toString()会输出普通小数格式:
      比如0.5.toString()返回"0.5"、0.000005.toString()返回"0.000005",这类字符串首字符都是0,parseInt解析到.就停止,所以统一返回0
    2. 当小于1的浮点数小于1e-6时,toString()会自动转为科学计数法格式:
      示例中的0.0000005等于5e-7,调用toString()后得到的是字符串"5e-7"
  • parseInt解析"5e-7"时,只会识别到开头的数字5,后续的e不属于整数的合法字符,解析直接终止,最终返回整数5

注意:如果需要对浮点数做取整操作,不要依赖parseInt,推荐使用Math.trunc()、Math.floor()等专门处理数值取整的API。

内容的提问来源于stack exchange,提问作者SeyyedKhandon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:27:00