Edit report at https://bugs.php.net/bug.php?id=45712&edit=1
ID: 45712 Comment by: cmbecker69 at gmx dot de Reported by: for-bugs at hnw dot jp Summary: $something == NaN returns true with 5.3, false with 5.2.* Status: Re-Opened Type: Bug Package: Variables related Operating System: * PHP Version: 5.2CVS, 5.3CVS, 6CVS (2008-08-05) Assigned To: tony2001 Block user comment: N Private report: N New Comment: > Please explain. It seems there was a bug *before* PHP 5.4, because if $a === $b, then $a == $b by definition. Previous Comments: ------------------------------------------------------------------------ [2011-05-26 07:59:24] phi...@php.net Reopening because the associated test tests INF as well. However, this is about INF: // 5.3.7-dev (and all past PHP versions, afaict) $inf = pow(0,-2); var_dump($inf==$inf); var_dump($inf===$inf); // false true // 5.4.0-dev $inf = pow(0,-2); var_dump($inf==$inf); var_dump($inf===$inf); // true true Please explain. And @jwvdveer, it was indeed fixed (in 5.3) and made to return false. ------------------------------------------------------------------------ [2010-07-28 01:28:53] jwvdveer at gmail dot com Please, reopen this bug. It's not working in PHP 5.3.3 on Windows platform (released at 2010-07-21). The behaviour of a comparison to NAN is the same as noted here. It's not just a `me too`, but this thread shouln't have been closed. ------------------------------------------------------------------------ [2008-08-07 08:36:33] tony2...@php.net This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2008-08-07 07:37:04] tony2...@php.net I'm testing a patch for it. ------------------------------------------------------------------------ [2008-08-05 12:52:06] for-bugs at hnw dot jp NaN is not exact number. So, NaN should not equals itself. Additionaly, NaN == NaN is false in C. You can see behavior of C as follows. $ cat nan.c int main() {double d;d=(-1e300*1e300)/(1e300*1e300);if (d==d) return 1; else return 2;} $ gcc nan.c; ./a.out; echo $? 2 $ ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=45712 -- Edit this bug report at https://bugs.php.net/bug.php?id=45712&edit=1