ID: 45712 User updated by: for-bugs at hnw dot jp Reported By: for-bugs at hnw dot jp Status: Critical Bug Type: Variables related Operating System: * PHP Version: 5.2CVS, 5.3CVS, 6CVS (2008-08-05) New Comment:
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 $ Previous Comments: ------------------------------------------------------------------------ [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