hnwの日記

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 となるのは違和感があるという風に書きました。これが自然な方向に修正されていたというわけです。やったね!