Re: Proposal for floored division and modulo functions
| From: | Rowan Tommins | Date: | Thu, 25 Aug 2022 20:16:52 +0000 |
| Subject: | Re: Proposal for floored division and modulo functions | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-118472@lists.php.net to get a copy of this message | ||
On 25/08/2022 12:33, Peter Bowyer wrote:
Is this not one time where using a flag to change a function's behaviour makes sense? So rather than fdiv, floor_div, int_div (etc) we have div($1, $2, DIV_FLOAT), div($1, $2, DIV_FLOOR), div($1, $2, DIV_INT). I'm not proposing div (non namespaced) as the name as I expect it clashes with a lot of UDF's, but it works well in this example.That probably makes more sense than a dedicated function - it's similar to the $mode parameter of round(), which has different strategies for what to do with halves. The obvious place would be on the existing intdiv() function - it's not a choice of "integer or floor", it's a choice of strategy within integer division. But then we face the awkward asymmetry of the current functionality: intdiv() - Integer division / - Floating-point division % - Integer modulus fmod() - Floating-point modulo Apparently as of PHP 8.0, there is also an fdiv() function, but the manual doesn't currently explain why it exists, and whether it will always give the same result as / (and if not, why not?) So, it *might* make sense to have the following: intdiv(int $num1, int $num2, int $mode = PHP_DIV_TRUNCATE): int intmod(int $num1, int $num2, int $mode = PHP_DIV_TRUNCATE): int Where $mode can also be PHP_DIV_FLOOR, and possibly additional algorithms in future - the paper linked to on microsoft.com discusses another three, and implies that there are many more. Regards, -- Rowan Tommins [IMSoP]