On Fri, May 2, 2008 at 6:52 PM, Jonathan Bond-Caron <[EMAIL PROTECTED]> wrote: > Hi, > > > > I'm new to the PHP internals list and I'm posting an issue I'm sure has been > mentioned before -- float comparison > > > > I'd like to know if there are reasons not to change the default behavior > when comparing floats. > > > > i.e. This would seem logical to me: > > > > $test = 19.6*100; > > if((float)(string)$test == (double)1960) > > echo "GOOD BEHAVIOR"; > > > > // Implicitely convert the float to string then float (en_US > locale) > > if($test == (double)1960) > > echo "THIS SHOULD PASS by casting > (float)(string)$test internally..."; > > else > > echo "NOT GOOD BEHAVIOR"; > > > > // Exact comparison would still fail > > if($test !== (double)1960) > > echo "GOOD BEHAVIOR"; > > > > Any reason why $test == (double)1960 should fail? I realized we are > comparing two floats, but couldn't php internally convert to string then > float - for the non strict (===) case
>From our bug report: " Floating point values have a limited precision. Hence a value might not have the same string representation after any processing. That also includes writing a floating point value in your script and directly printing it without any mathematical operations. If you would like to know more about "floats" and what IEEE 754 is read this: http://docs.sun.com/source/806-3568/ncg_goldberg.html Thank you for your interest in PHP. " We use this text as automatic reply for bugs about floating points (aka bogus). Cheers, -- Pierre http://blog.thepimp.net | http://www.libgd.org -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php