Hi,
Jonathan Bond-Caron 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
Thanks


Never compare directly floats but subtract one from the other and check whether the difference is bigger or smaller than a small predefined number.

Regards,
Andrey



--
Andrey Hristov, Connectors Software Developer
Sun Microsystems GmbH, Sonnenallee 1, 85551 Kirchheim-Heimstetten
Amtsgericht Muenchen: HRB161028
Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Vorsitzender des Aufsichtsrates: Martin Haering

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to