今天在羣裏看到一個朋友發了一個代碼
< ?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