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