Поделиться через


Перечисление System.MidpointRounding

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Используйте перечисление MidpointRounding с соответствующими перегрузками Math.Round, MathF.Roundа Decimal.Round также для обеспечения большего контроля за процессом округления.

Существует две общие стратегии округления — округление до ближайшего и направленного округления, и каждое поле перечисления участвует в одной из этих стратегий.

Округление до ближайшего

Поля:

Операция округления к ближайшей занимает исходное число с неявной или указанной точностью; проверяет следующую цифру, которая находится на этой точности плюс один; и возвращает ближайшее число с той же точностью, что и исходное число. Для положительных чисел, если следующая цифра составляет от 0 до 4, ближайшее число приближается к отрицательной бесконечности. Если следующая цифра составляет от 6 до 9, ближайшее число приближается к положительной бесконечности. Для отрицательных чисел, если следующая цифра составляет от 0 до 4, ближайшее число приближается к положительной бесконечности. Если следующая цифра составляет от 6 до 9, ближайшее число приближается к отрицательной бесконечности.

Если следующая цифра составляет от 0 до 4 или 6–9, это MidpointRounding.AwayFromZeroMidpointRounding.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