ID: 45712
Updated by: [email protected]
Reported By: for-bugs at hnw dot jp
-Status: Critical
+Status: Assigned
Bug Type: Variables related
Operating System: *
PHP Version: 5.2CVS, 5.3CVS, 6CVS (2008-08-05)
-Assigned To:
+Assigned To: tony2001
New Comment:
I'm testing a patch for it.
Previous Comments:
------------------------------------------------------------------------
[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
$
------------------------------------------------------------------------
[2008-08-05 12:33:17] [email protected]
That $nan == $nan should be true. (like it is with 5.3)
------------------------------------------------------------------------
[2008-08-05 02:39:58] for-bugs at hnw dot jp
Description:
------------
There is == operator's problem dealing with NaN(Not a Number) in PHP
5.3.0alpha1. This behavior is different with PHP 5.0.0-5.2.6, so this is
compatibility problem.
Reproduce code:
---------------
<?php
$nan = (-1e300*1e300)/(1e300*1e300); // float(NAN)
var_dump($nan=='');
var_dump($nan==0.5);
var_dump($nan==50);
var_dump($nan=='500');
var_dump($nan=='abc');
var_dump($nan==$nan);
Expected result:
----------------
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
Actual result:
--------------
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45712&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.