Hi
On 9/3/23 17:50, Alexandru Pătrănescu wrote:
I believe consistency is important and using UP for "away from zero" and
DOWN for "towards zero" sounds good to me. That was so far used
consistently everywhere, as far as I'm aware.
Documentation is very clear about what they mean, and you can always think
that both positive infinity and negative infinity are up while zero is down.
I believe that the code should be easy to understand without needing to
consult the documentation. I don't find it obvious at all that "up"
would be the infinity with the same signum rather than the positive
infinity. This would likely be something I would need to look up all the
time.
In fact, let me quote from the Wikipedia article linked in the RFC:
https://en.wikipedia.org/wiki/Rounding#Rounding_half_up
> However, some programming languages (such as Java, Python) define
their half up as round half away from zero here.
Rounding "up" in Wikipedia is defined as rounding towards positive infinity:
https://en.wikipedia.org/wiki/Rounding#Rounding_up
> round up (or take the ceiling, or round toward positive infinity): y
is the smallest integer that is not less than x.
I'd also like to refer to this exchange of Mastodon regarding a very
similar issue with PHP 8.3's new IntervalBoundary enum:
https://phpc.social/@asgrim/109318512018298154
The terminology "closed" and "open" matches the standard terminology in
maths, but without the necessary background in maths it is not obvious
and indeed "inclusive" and "exclusive" might've been easier to
understand for everyone, including mathematicians [1].
In this case of rounding the existing behavior of "up" meaning "towards
the same-signum infinity" rather than "positive infinity" appears to
even contradict the definition used by Wikipedia which I also expect to
be the mathematical definition (but I'm happy to be corrected here).
"Away from zero" should be clear to everyone with a basic understanding
of English.
Introducing a brand-new RoundingMode enum (using union types) I
suggested in my first email would nicely solve the naming problem and
would also make the API more obvious to use due to stronger typing in
the long run.
Yes, we can have some extra constants for the four ones that contain "up"
or "down" with "away from zero" and "towards zero", but I find it
unnecessary.
Best regards
Tim Düsterhus
[1] Back then I didn't have the energy to create a follow-up RFC and now
it's definitely too late. At least the naming is mathematically accurate.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php