> Le 12 juil. 2024 à 13:24, Christoph M. Becker <cmbecke...@gmx.de> a écrit :
> 
> Hi all,
> 
> there has been a "small" change in the rounding logic of
> _php_math_round()[1] a couple of months ago.  A respective ticket,
> claiming the new behavior would be a bug[2] had been filed a while ago
> without proper triage so far.  I'm bringing this to your attention,
> because I'm afraid that there will be (many) more bug reports about this
> in the future (note that the change only affects master, and only PHP
> 8.4.0alpha1 has been released yet, so it is probably not widespreadly
> tested yet).  At the very least we should be sure that we want to keep
> this change, and document it well, to avoid discussions in every filed
> ticket.
> 
> My personal stance on this is simple: floating point arithmetic is not
> exact per se, and changes to how PHP handles the details should only be
> introduced, if they clearly improve things.  This change apparently
> improves some cases, but worsens others.  Thus, I think the change
> should better be reverted, and if at all, postponed to PHP 9, since I
> neither regard this change as bug fix nor as a feature.
> 
> What do you think?
> 
> [1] <https://github.com/php/php-src/pull/12222>
> [2] <https://github.com/php/php-src/issues/14332>
> 
> Cheers,
> Christoph

Hi,

See [1] and [2], which motivated the change. 

I expect that `round($anything) == (int) round($anything)` for any float 
between PHP_INT_MIN and PHP_INT_MAX, and I think that the change fixed that .

Therefore, I am for keeping the change, and ensuring that there are test cases 
for 4503599627370495.5 (the largest float with fractional part).

—Claude

[1]: https://github.com/php/php-src/issues/12143#issuecomment-1713465981
[2]: https://3v4l.org/3Q7BC

Reply via email to