The RFC proposes to add 4 new modes to the round() function.
Note: The aforementioned constants have been transformed into an enum in a follow-up RFC.
Two first comments on the documentation page of the round() function are related to the missing modes of rounding. The first comment has an outstanding number of 309 votes.
Moreover, the NumberFormatter already implements 4 new proposed modes known as ROUND_CEILING, ROUND_FLOOR, ROUND_DOWN, ROUND_UP.
Adding 4 new constants for the rounding modes of function round():
Creating two aliases of constants from Intl extension to have consistent naming for rounding modes:
None
8.4
The functions ceil() and floor() round numbers to the full integer, while the function round() rounds the number by given precision. Implementing new rounding modes we get equivalent of those functions using round() with 0 as precision.
Such constants already exist in the NumberFormatter and represent rounding modes 'away from zero' and 'toward zero'. However the names rounding up and down are ambiguous. They may be easily confused with the rounding ceiling/floor, while the terms away from/toward zero are distinct.
Those constants would be deprecated and replaced with their corresponding aliases: ROUND_TOWARD_ZERO and ROUND_AWAY_FROM_ZERO.
As this is extension of the existing modes we should add complementary modes to the existing constants instead implementing new Enum. This way enum is an addition to the new constants and is not included into this RFC.
As per the voting RFC a yes/no vote with a 2/3 majority is needed for this proposal to be accepted.
Voting started on 2023-11-15 and will end on 2023-11-30 00:00 GMT.
If the first voting is not accepted the result of the second voting will be ignored.
GitHub pull request: https://github.com/php/php-src/pull/12056
Links to external references, discussions or RFCs
Keep this updated with features that were discussed on the mail lists.