Add more rounding modes
sffc opened this issue · 5 comments
@littledan suggested adding rounding modes to the Intl.NumberFormat V3 proposal.
The spec currently says:
Let n be an integer for which the exact mathematical value of n ÷ 10^(f – x( is as close to zero as possible. If there are two such n, pick the larger n.
In other words, numbers are always rounded "half up". However, this is not always what users want.
ICU supports a longer list of rounding modes:
http://userguide.icu-project.org/formatparse/numbers/rounding-modes
- Ceiling
- Floor
- Down
- Up
- Half-even
- Half-up
- Half-down
According to this table, "ceiling" rounds numbers toward positive infinity for all numbers; "up" rounds positive numbers toward positive infinity and negative numbers toward negative infinity. So, I think "half-up" is what 402 is doing.
For example:
(-1.5).toLocaleString("en", {maximumFractionDigits: 0})
// "-2"
That would be "-1" for "half-ceiling".
Should Number#toPrecision, Number#toFixed and Number#toExponential also be updated? This will allow -BigDecimal- BigFloat ( with interface described in https://github.com/tc39/proposal-decimal ) to have the same abilitiy. Btw, for me, it is interesting to support only "half-down" and "half-up", seems.
Should Number#toPrecision, Number#toFixed and Number#toExponential also be updated? This will allow -BigDecimal- BigFloat ( with interface descrpibed in https://github.com/tc39/proposal-decimal ) to have the same abilitiy. For me, it is interesting to support only "half-down" and "half-up", seems.
This proposal will set that type of precedent, but it is beyond the scope of what I plan to do.
By the way, the main issue for discussion of rounding modes can be found in the proposal repo: tc39/proposal-intl-numberformat-v3#7