MidpointRounding Wyliczenie

Definicja

Określa sposób, w jaki metody zaokrąglania matematycznego powinny przetwarzać liczbę, która jest w połowie między dwiema liczbami.Specifies how mathematical rounding methods should process a number that is midway between two numbers.

public enum class MidpointRounding
public enum MidpointRounding
[System.Runtime.InteropServices.ComVisible(true)]
public enum MidpointRounding
type MidpointRounding = 
Public Enum MidpointRounding
Dziedziczenie
MidpointRounding
Atrybuty

Pola

AwayFromZero 1

Gdy liczba jest w połowie między dwoma innymi, jest zaokrąglana do najbliższej liczby, która jest w kierunku od zera.When a number is halfway between two others, it is rounded toward the nearest number that is away from zero.

ToEven 0

Gdy liczba jest w połowie między dwoma innymi, jest zaokrąglana do najbliższej parzystej liczby.When a number is halfway between two others, it is rounded toward the nearest even number.

ToNegativeInfinity 3

Gdy liczba jest w połowie między dwoma innymi, jest zaokrąglana do najbliższego wyniku i nie większy niż nieskończonie precyzyjny.When a number is halfway between two others, it is rounded toward the result closest to and no greater than the infinitely precise result.

ToPositiveInfinity 4

Gdy liczba jest w połowie między dwoma innymi, jest zaokrąglana do najbliższego wyniku i nie mniejsze od nieskończonie precyzyjnego wyniku.When a number is halfway between two others, it is rounded toward the result closest to and no less than the infinitely precise result.

ToZero 2

Gdy liczba jest w połowie między dwoma innymi, jest zaokrąglana do najbliższego wyniku i nie może być większe niż nieskończonie precyzyjne.When a number is halfway between two others, it is rounded toward the result closest to and no greater in magnitude than the infinitely precise result.

Przykłady

Poniższy przykład ilustruje metodę Math.Round w połączeniu z wyliczeniem MidpointRounding:The following example demonstrates the Math.Round method in conjunction with the MidpointRounding 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)

*/
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.
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
End Class
'
'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)
'

Uwagi

Użyj MidpointRounding z odpowiednimi przeciążeniami Math.Round, aby zapewnić większą kontrolę nad procesem zaokrąglania.Use MidpointRounding with appropriate overloads of Math.Round to provide more control of the rounding process.

Operacja zaokrąglania przyjmuje oryginalną liczbę z niejawną lub określoną dokładnością; bada następną cyfrę, która jest z dokładnością plus jeden; i zwraca najbliższą liczbę z taką samą dokładnością jak oryginalna liczba.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. W przypadku liczb dodatnich, jeśli Następna cyfra ma wartość od 0 do 4, najbliższa liczba jest w kierunku nieskończoności ujemnej.For positive numbers, if the next digit is from 0 through 4, the nearest number is toward negative infinity. Jeśli następna cyfra to od 6 do 9, najbliższa liczba jest w kierunku nieskończoności dodatniej.If the next digit is from 6 through 9, the nearest number is toward positive infinity. W przypadku liczb ujemnych, jeśli Następna cyfra ma wartość od 0 do 4, najbliższa liczba zbliża się do nieskończoności dodatniej.For negative numbers, if the next digit is from 0 through 4, the nearest number is toward positive infinity. Jeśli następna cyfra to od 6 do 9, najbliższa liczba jest w kierunku nieskończoności ujemnej.If the next digit is from 6 through 9, the nearest number is toward negative infinity.

W poprzednich przypadkach Wyliczenie MidpointRounding nie wpływa na wynik operacji zaokrąglania.In the previous cases, the MidpointRounding enumeration does not affect the result of the rounding operation. Jeśli jednak kolejną cyfrą jest 5, czyli punkt środkowy między dwoma możliwymi wynikami, a wszystkie pozostałe cyfry są równe zero lub nie ma żadnych pozostałych cyfr, najbliższa liczba jest niejednoznaczna.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. W takim przypadku Wyliczenie MidpointRounding pozwala określić, czy operacja zaokrąglania zwraca najbliższą liczbę z przedziału od zera do najbliższej parzystej liczby.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.

W poniższej tabeli przedstawiono wyniki zaokrąglania liczb ujemnych i dodatnich w połączeniu z wartościami MidpointRounding.The following table demonstrates the results of rounding some negative and positive numbers in conjunction with the values of MidpointRounding. Precyzja używana do zaokrąglania liczb jest równa zero, co oznacza, że liczba po przecinku ma wpływ na operację zaokrąglania.The precision used to round the numbers is zero, which means the number after the decimal point affects the rounding operation. Na przykład dla liczby-2,5, cyfry po przecinku dziesiętnym wynosi 5.For example, for the number -2.5, the digit after the decimal point is 5. Ponieważ ta cyfra jest środkową, można użyć wartości MidpointRounding, aby określić wynik zaokrąglania.Because that digit is the midpoint, you can use a MidpointRounding value to determine the result of rounding. Jeśli określono AwayFromZero, zwracana jest wartość-3, ponieważ jest to najbliższa liczba z przesuniętą do zera z dokładnością równą zero.If AwayFromZero is specified, -3 is returned because it is the nearest number away from zero with a precision of zero. Jeśli określono ToEven, zwracana jest wartość-2, ponieważ jest to najbliższa parzysta liczba z dokładnością równą zero.If ToEven is specified, -2 is returned because it is the nearest even number with a precision of zero.

Liczba oryginalnaOriginal 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

Dotyczy