字符串相等原因

php_aga 2014-02-08 04:48:35
请教一下,为何PHP认为一下两个字符串是相等的?
if("03E-004611"=="36E-008026") echo '相等';
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-02-09
  • 打赏
  • 举报
回复
这与是否在单双引号内无关! 只是个对科学计数法的认知问题 你说 我有试过90A-904611与36E-008026,这两个字符串就不相等吖 其中 36E-008026 可视为科学计数法,而 90A-904611 不是 所以对这样的编号需要按字符串进行比较,而不是数值
episome 2014-02-09
  • 打赏
  • 举报
回复
涨姿势了 啊啊
php_aga 2014-02-08
  • 打赏
  • 举报
回复
引用 2 楼 chinmo 的回复:
[quote=引用 楼主 php_aga 的回复:] 请教一下,为何PHP认为一下两个字符串是相等的? if("03E-004611"=="36E-008026") echo '相等';
楼上解释的还不是很完善,因为你使用的是双引号,而且你的是数字组成的,在双引号里是可以执行的,这个是php的一个特点,如果换成单引号那就不一样了[/quote] 换成单引号结果也是一样吧
monkren 2014-02-08
  • 打赏
  • 举报
回复
长知识了
blizzf99 2014-02-08
  • 打赏
  • 举报
回复
顶帖收藏~~~~
王小葱 2014-02-08
  • 打赏
  • 举报
回复
因为E是10的幕运算 "03E-004611"转换成符点数时已经无限接近0了,3*pow(10,-4611),达不到这么高的精度,所以就都是0了.
  • 打赏
  • 举报
回复
引用 楼主 php_aga 的回复:
请教一下,为何PHP认为一下两个字符串是相等的? if("03E-004611"=="36E-008026") echo '相等';
楼上解释的还不是很完善,因为你使用的是双引号,而且你的是数字组成的,在双引号里是可以执行的,这个是php的一个特点,如果换成单引号那就不一样了
xuzuning 2014-02-08
  • 打赏
  • 举报
回复
var_dump("03E-004611"=="36E-008026"); //bool(true)
var_dump(03E-004611, 36E-008026); //float(0) float(0)
var_dump("03E-004611"==="36E-008026"); //bool(false)

由数字组成的串,在比较时会先转换为数值

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧