Float comparison
| From: | Jonathan Bond-Caron | Date: | Fri, 02 May 2008 16:52:10 +0000 |
| Subject: | Float comparison | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-37401@lists.php.net to get a copy of this message | ||
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