MidpointRounding MidpointRounding MidpointRounding MidpointRounding Enum

Definition

Задает способ обработки чисел, которые равноудалены от двух соседних чисел, в математических методах округления. Specifies how mathematical rounding methods should process a number that is midway between two numbers.

public enum class MidpointRounding
[System.Runtime.InteropServices.ComVisible(true)]
public enum MidpointRounding
type MidpointRounding = 
Public Enum MidpointRounding
Inheritance
MidpointRoundingMidpointRoundingMidpointRoundingMidpointRounding
Attributes

Fields

AwayFromZero AwayFromZero AwayFromZero AwayFromZero 1

Когда число находится посредине между двумя другими числами, оно округляется до ближайшего числа дальше от нуля. When a number is halfway between two others, it is rounded toward the nearest number that is away from zero.

ToEven ToEven ToEven ToEven 0

Когда число находится посредине между двумя другими числами, оно округляется до ближайшего четного числа. When a number is halfway between two others, it is rounded toward the nearest even number.

Examples

В следующем примере кода показано Round в сочетании с ToEven перечисления.The following code example demonstrates the Round method in conjunction with the ToEven enumeration.

// This example demonstrates the Math.Round() method in conjunction 
// with the MidpointRounding enumeration.
using namespace System;

void main()
{
    Decimal result = (Decimal) 0.0;
    Decimal posValue = (Decimal) 3.45;
    Decimal negValue = (Decimal) -3.45;

    // By default, round a positive and a negative value to the nearest
    // even number. The precision of the result is 1 decimal place.
    result = Math::Round(posValue, 1);
    Console::WriteLine("{0,4} = Math.Round({1,5}, 1)", result, posValue);
    result = Math::Round(negValue, 1);
    Console::WriteLine("{0,4} = Math.Round({1,5}, 1)", result, negValue);
    Console::WriteLine();

    // Round a positive value to the nearest even number, then to the
    // nearest number away from zero. The precision of the result is 1
    // decimal place.
    result = Math::Round(posValue, 1, MidpointRounding::ToEven);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)",
        result, posValue);
    result = Math::Round(posValue, 1, MidpointRounding::AwayFromZero);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)",
        result, posValue);
    Console::WriteLine();

    // Round a negative value to the nearest even number, then to the
    // nearest number away from zero. The precision of the result is 1
    // decimal place.
    result = Math::Round(negValue, 1, MidpointRounding::ToEven);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)",
        result, negValue);
    result = Math::Round(negValue, 1, MidpointRounding::AwayFromZero);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)",
        result, negValue);
    Console::WriteLine();
}

/*
This code example produces the following results:

3.4 = Math.Round( 3.45, 1)
-3.4 = Math.Round(-3.45, 1)

3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)

-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)

*/
// This example demonstrates the Math.Round() method in conjunction 
// with the MidpointRounding enumeration.
using System;

class Sample 
{
    public static void Main() 
    {
    decimal result = 0.0m;
    decimal posValue =  3.45m;
    decimal negValue = -3.45m;

// By default, round a positive and a negative value to the nearest even number. 
// The precision of the result is 1 decimal place.

    result = Math.Round(posValue, 1);
    Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, posValue);
    result = Math.Round(negValue, 1);
    Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, negValue);
    Console.WriteLine();

// Round a positive value to the nearest even number, then to the nearest number away from zero. 
// The precision of the result is 1 decimal place.

    result = Math.Round(posValue, 1, MidpointRounding.ToEven);
    Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", result, posValue);
    result = Math.Round(posValue, 1, MidpointRounding.AwayFromZero);
    Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", result, posValue);
    Console.WriteLine();

// Round a negative value to the nearest even number, then to the nearest number away from zero. 
// The precision of the result is 1 decimal place.

    result = Math.Round(negValue, 1, MidpointRounding.ToEven);
    Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", result, negValue);
    result = Math.Round(negValue, 1, MidpointRounding.AwayFromZero);
    Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", result, negValue);
    Console.WriteLine();
    }
}
/*
This code example produces the following results:

 3.4 = Math.Round( 3.45, 1)
-3.4 = Math.Round(-3.45, 1)

 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)

-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)

*/
' This example demonstrates the Math.Round() method in conjunction 
' with the MidpointRounding enumeration.
Imports System

Class Sample
    Public Shared Sub Main() 
        Dim result As Decimal = 0D
        Dim posValue As Decimal = 3.45D
        Dim negValue As Decimal = -3.45D
        
        ' By default, round a positive and a negative value to the nearest even number. 
        ' The precision of the result is 1 decimal place.
        result = Math.Round(posValue, 1)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, posValue)
        result = Math.Round(negValue, 1)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, negValue)
        Console.WriteLine()
        
        ' Round a positive value to the nearest even number, then to the nearest number 
        ' away from zero. The precision of the result is 1 decimal place.
        result = Math.Round(posValue, 1, MidpointRounding.ToEven)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", _
                           result, posValue)
        result = Math.Round(posValue, 1, MidpointRounding.AwayFromZero)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", _
                           result, posValue)
        Console.WriteLine()
        
        ' Round a negative value to the nearest even number, then to the nearest number 
        ' away from zero. The precision of the result is 1 decimal place.
        result = Math.Round(negValue, 1, MidpointRounding.ToEven)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", _
                            result, negValue)
        result = Math.Round(negValue, 1, MidpointRounding.AwayFromZero)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", _
                           result, negValue)
        Console.WriteLine()
    
    End Sub 'Main
End Class 'Sample
'
'This code example produces the following results:
'
' 3.4 = Math.Round( 3.45, 1)
'-3.4 = Math.Round(-3.45, 1)
'
' 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
' 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)
'
'-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
'-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
'

Remarks

Используйте MidpointRounding с соответствующей перегруженной версии Math.Round чтобы обеспечить больший контроль процесса округления.Use MidpointRounding with appropriate overloads of Math.Round to provide more control of the rounding process.

Операции округления принимает исходное число с явно или неявно заданной точностью. проверяет следующая цифра, находящимся на этой точностью плюс один; и возвращает номер ближайшей с той же точностью, как исходный номер.A rounding operation takes an original number with an implicit or specified precision; examines the next digit, which is at that precision plus one; and returns the nearest number with the same precision as the original number. Для положительных чисел Если следующая цифра находится в диапазоне от 0 до 4, ближайшего числа является направлении минус бесконечности.For positive numbers, if the next digit is from 0 through 4, the nearest number is toward negative infinity. Если следующая цифра от 6 до 9, номер ближайшей — в сторону положительной бесконечности.If the next digit is from 6 through 9, the nearest number is toward positive infinity. Для отрицательных чисел Если следующая цифра находится в диапазоне от 0 до 4, ближайшего числа является сторону положительной бесконечности.For negative numbers, if the next digit is from 0 through 4, the nearest number is toward positive infinity. Если следующая цифра от 6 до 9, номер ближайшей находится в направлении минус бесконечности.If the next digit is from 6 through 9, the nearest number is toward negative infinity.

В предыдущих случаях MidpointRounding перечисления не влияет на результат операции округления.In the previous cases, the MidpointRounding enumeration does not affect the result of the rounding operation. Тем не менее если следующая цифра 5, то есть арифметическое двух возможных результатов и все остальные цифры равны нулю, или отсутствуют оставшиеся цифры, ближайшего числа является неоднозначным.However, if the next digit is 5, which is the midpoint between two possible results, and all remaining digits are zero or there are no remaining digits, the nearest number is ambiguous. В этом случае MidpointRounding перечисление позволяет указать, возвращает ли операция округления ближайшего числа от нуля или ближайшего четного числа.In this case, the MidpointRounding enumeration enables you to specify whether the rounding operation returns the nearest number away from zero or the nearest even number.

В следующей таблице показаны результаты округления некоторые отрицательных и положительных чисел в сочетании со значениями MidpointRounding.The following table demonstrates the results of rounding some negative and positive numbers in conjunction with the values of MidpointRounding. Точность, используемая для округления чисел равно нулю, что означает число после десятичной запятой влияет на операции округления.The precision used to round the numbers is zero, which means the number after the decimal point affects the rounding operation. Например для номера – 2,5 цифр после десятичной запятой равно 5.For example, for the number -2.5, the digit after the decimal point is 5. Поскольку эта цифра является средней точкой, можно использовать MidpointRounding значение, чтобы определить результат округления.Because that digit is the midpoint, you can use a MidpointRounding value to determine the result of rounding. Если указан AwayFromZero, -3 возвращается в том случае, так как это ближайшего числа от нуля с точностью 0.If AwayFromZero is specified, -3 is returned because it is the nearest number away from zero with a precision of zero. Если указан ToEven, -2 возвращается в том случае, так как это ближайшего четного числа с точностью до нуля.If ToEven is specified, -2 is returned because it is the nearest even number with a precision of zero.

Исходный номерOriginal number AwayFromZeroAwayFromZero ToEvenToEven
3.53.5 44 44
2.82.8 33 33
2.52.5 33 22
2.12.1 22 22
-2.1-2.1 -2-2 -2-2
-2.5-2.5 -3-3 -2-2
-2.8-2.8 -3-3 -3-3
-3.5-3.5 -4-4 -4-4

Applies to