Re: Patches for Review
| From: | Gustavo Lopes | Date: | Sun, 04 Mar 2012 13:52:14 +0000 |
| Subject: | Re: Patches for Review | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-58570@lists.php.net to get a copy of this message | ||
On Sun, 04 Mar 2012 14:29:49 +0100, Anthony Ferrara <ircmaxell@gmail.com> wrote:
I had messaged about these patches before, but with the 5.4 release process happening I think it slipped through the cracks. I have 3 patches that are ready for inclusion...This doesn't seem right. It's overly clever. It's like saying that 4.0 + 1 should return int(5) and not float(5.). Or perhaps a closer analogy would be: if we're in a 64-bit platform (only then can integers have a larger precision than doubles); if one of the operands is exactly an integer; if the other operand is a float exactly representable as an integer (perhaps a large power of 2), but its accuracy is negative (where accuracy is the 15.9546 - log10(abs(x)), or, informally, the effective number of digits to the right of the decimal point); if the result of the sum is exactly representable as a 64-bit integer; then return such integer. It's easy to see these sort of tricks would have to be applied all over the place (additions, products, and all other mathematical operations). In sum, I think the rule that if a mathematical operation involves a float, the result should be a float ought to be kept. -- Gustavo Lopes[...]https://bugs.php.net/bug.php?id=60789 Bringing pow() inline with docs in that it will attempt to return an integer (by casting one or more of the arguments to int) if possible. This fixes a precision loss that can occur with float arguments that are exactly integers on 64 bit platforms. [...]