PHP 5.4.0から無限大==無限大になってた
本日はエイプリルフールなので、嘘でも本当でも誰も困らないネタを紹介します。
内容としてはタイトルの通りで、浮動小数点数の無限大とマイナス無限大に関する==の挙動がPHP 5.3.xまでとPHP 5.4.0以降で変わっていたという話題です。
$ php-5.3.29 -r '$x=INF;var_dump($x, $x==$x);' float(INF) bool(false) $ php-5.4.0 -r '$x=INF;var_dump($x, $x==$x);' float(INF) bool(true)
このように、PHP 5.4.0以降は INF == INF、-INF == -INF という挙動になりました。
僕は過去の記事「「===」がtrueを返し「==」がtrueを返さないサンプル」で、当時のPHPが INF === INF なのに INF != INF となるのは違和感があるという風に書きました。これが自然な方向に修正されていたというわけです。やったね!