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

PHP中比较两个不同字符串返回true的异常行为原因咨询

问题原因

这是PHP中**松散相等比较(==)**的自动类型转换规则导致的现象:

  • 当使用==比较两个格式符合科学计数法的字符串时,PHP会默认先将两个字符串转换为浮点数,再比较数值结果,而非直接对比字符串字面内容。
  • 你用到的两个字符串'115e-401'、'115e-402'均为科学计数法格式的数值字符串,换算为十进制数值分别为1.15×10^-399和1.15×10^-400。
  • PHP采用IEEE 754双精度标准存储浮点数,该标准可支持的最小正浮点数约为2.2×10^-308,上述两个数值都远小于该阈值,转换浮点数时会因为精度下溢直接被截断为0.0,两个0.0比较自然返回true。

修复方案

如果需要严格对比两个字符串的字面内容,请使用全等比较符===,该运算符不会触发自动类型转换,会同时校验变量的类型和值:

dd('115e-401' === '115e-402'); // 返回预期的false

现象截图

现象截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 23:24:02