Перечисление System.MidpointRounding
В этой статье приводятся дополнительные замечания к справочной документации по этому API.
Используйте перечисление MidpointRounding с соответствующими перегрузками Math.Round, MathF.Roundа Decimal.Round также для обеспечения большего контроля за процессом округления.
Существует две общие стратегии округления — округление до ближайшего и направленного округления, и каждое поле перечисления участвует в одной из этих стратегий.
Округление до ближайшего
Поля:
Операция округления к ближайшей занимает исходное число с неявной или указанной точностью; проверяет следующую цифру, которая находится на этой точности плюс один; и возвращает ближайшее число с той же точностью, что и исходное число. Для положительных чисел, если следующая цифра составляет от 0 до 4, ближайшее число приближается к отрицательной бесконечности. Если следующая цифра составляет от 6 до 9, ближайшее число приближается к положительной бесконечности. Для отрицательных чисел, если следующая цифра составляет от 0 до 4, ближайшее число приближается к положительной бесконечности. Если следующая цифра составляет от 6 до 9, ближайшее число приближается к отрицательной бесконечности.
Если следующая цифра составляет от 0 до 4 или 6–9, это MidpointRounding.AwayFromZero
MidpointRounding.ToEven
значение не влияет на результат операции округления. Однако если следующая цифра равна 5, то это середина между двумя возможными результатами, и все оставшиеся цифры равны нулю или нет оставшихся цифр, ближайшее число неоднозначно. В этом случае режимы MidpointRounding
округления до ближайшего времени позволяют указать, возвращается ли округление ближайшее число от нуля или ближайшего четного числа.
В следующей таблице показаны результаты округления некоторых отрицательных и положительных чисел в сочетании с кругло-ближайшими режимами. Точность, используемая для округления чисел, равна нулю, что означает, что число после десятичной запятой влияет на операцию округления. Например, для числа -2,5 цифра после десятичной запятой составляет 5. Так как эта цифра является серединой MidpointRounding
, можно использовать значение для определения результата округления. Если AwayFromZero
задано, возвращается значение -3, так как оно является ближайшим числом от нуля с точностью от нуля. Если ToEven
задано, возвращается значение -2, так как оно является ближайшим четным числом с точностью от нуля.
Исходный номер | AwayFromZero | ToEven |
---|---|---|
3.5 | 4 | 4 |
2.8 | 3 | 3 |
2.5 | 3 | 2 |
2.1 | 2 | 2 |
-2.1 | -2 | -2 |
2,5– | -3 | -2 |
-2.8 | -3 | -3 |
3,5– | -4 | -4 |
Направленное округление
Поля:
Операция направленного округления принимает исходное число с неявной или указанной точностью и возвращает следующее ближайшее число в определенном направлении с той же точностью, что и исходное число. Режимы перенаправления на MidpointRounding
элемент управления, к которому выполняется предопределенное число округления.
В следующей таблице показаны результаты округления некоторых отрицательных и положительных чисел в сочетании с режимами направленного округления. Точность, используемая для округления чисел, равна нулю, что означает, что число до того, как десятичная точка будет затронута операцией округления.
Исходный номер | ToNegativeInfinity | ToPositiveInfinity | ToZero |
---|---|---|---|
3.5 | 3 | 4 | 3 |
2.8 | 2 | 3 | 2 |
2.5 | 2 | 3 | 2 |
2.1 | 2 | 3 | 2 |
-2.1 | -3 | -2 | -2 |
2,5– | -3 | -2 | -2 |
-2.8 | -3 | -2 | -2 |
3,5– | -4 | -3 | -3 |