首页 > 代码库 > 为什么 var_dump("1" == "1e0"); 的结果为true
为什么 var_dump("1" == "1e0"); 的结果为true
今天,同学问我一个问题,如下:var_dump("1" == "1e0"); 的结果是什么。
我的第一反应,答案是false。因为很明显的要比较的是两个字符串,而字符串比较时,只需比较其内容即可。很明显, 两个字符串的内容并不一样,当然是false了。
然而,我又注意到要比较的字符串中存在一个纯数字字符串“1”,那根据规则,当要比较的是两个纯数字字符串时要转换成数值型来比较。这里只有一个。所以仍应该安字符串来比较,结果仍为false。
但实际运行代码,结果确实true,我和我的小伙伴都震惊了!!怎么可能是true!!为什么会是true!!这跟说好的不一样啊!!
经过我们仔细的研究,发现这竟然不是两个普通字符串在比较,而是两个纯数值字符串!!因为“1e0”竟然是科学计数法的1!!
//e0表示10的0次方。所以1e0表示:1*10的0次方。
var_dump(1e0); //float(1)
var_dump(1e3); //float(1000)
所以当var_dump("1" == "1e0")时,结果才为true。
为什么 var_dump("1" == "1e0"); 的结果为true
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。