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

Reply via email to