關於PHP"=="運算符

今天在羣裏看到一個朋友發了一個代碼

< ?php 	$a = 5.5; 	$b = 5.3+0.1+0.1; 	var_dump($a == $b); ?>

大家猜猜結果是什麼呢?

bool(false)

想了半天都沒想出來怎麼回事,原先以爲是類型,前面那個是float,後面那個以爲是string,但是測了一下,還是float的,頓時蒙了。
結果大牛Larence發話了

浮點數, 都是不驚雀的
精確
over

上面那個是原話,不過的確說到地方了,不愧是大牛啊,PHP的官方開發小組的大牛啊。試了一下

< ?php 	$a = 5; 	$b = 2+2+1; 	var_dump($a == $b); ?>

輸出結果爲TRUE,真的是浮點數不精確的的原因,記上一記,以免犯同樣錯誤
用了下面的代碼測試一下

var_dump($a == ($a - 0.3 - 0.1) + 0.4);

上面的代碼報的FALSE;這就說明了,具體的問題是出在浮點數的運算過程之中,浮點數的運算會使數據不精確
剛剛看到,這個問題還存在與JavaScript


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章