Issue 38160 - MidpointRounding is buggy #38563
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
From the [https://github.com//issues/38160] issue
USAGE
The System.Math.Round and System.MathF.Round is buggy when using MidpointRounding and the algorithm may overflow when using digits.
The MidpointRounding counts some directed round (and not rounding to nearest integer), for example : the MidpointRounding.ToZero description says : "when a number is halfway between two others......." but in reality is a directed rounding (and not HALF).
Proposed API
To avoid breaking changes, a new enum for the rounding mode is proposed, the rounding functions using MidpointRounding are marked as obsolete (except for MidpointRounding.ToEven that is correct), and an implementation with the new enum is proposed.