為什么 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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM