Todd Ruth schrieb:
I'm afraid you'll find Pierre's response representative.  The
php devs seem to consider the fact that a theoretically perfect
"==" doesn't exist to mean that the improvements that would cover 99.9% of user issues with float == shouldn't be made.

It could be worse, however.  At least the cast to string works
as one would expect.  Just imagine if those who oppose
improving "==" had their logic extended to the cast to string.
Php might to the following:

<?php
$x=.3+.4+.5;
print "$x\n";
?>

might output "1.19999999999999996447286321199499070644378662109375"

If someone filed a bug report, they could refer you to that
paper and tell you there's no bug because you're trying to get
a string from float and you never know what you might get.

Actually, depending on ini settings, that happens:

$ php -dprecision=100 -r 'echo 0.3+0.4+0.5,"\n";'
1.1999999999999999555910790149937383830547332763671875

Don't echo floats, use printf() or alike.

And you'll quickly see that the "cast to string before comparision" is a bad idea, because:
$ php -dprecision=1 -r 'var_dump((string)1.4 == (string)1.1);'
bool(true)

Having display settings affect comparisions seems like a really bad idea to me ;)

Regards,
Stefan

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

Reply via email to