MidpointRounding Enumeration

Definition

Gibt die Strategie an, mit der mathematische Rundungsmethoden eine Zahl rundet werden sollen.

public enum class MidpointRounding
public enum MidpointRounding
[System.Runtime.InteropServices.ComVisible(true)]
public enum MidpointRounding
type MidpointRounding = 
[<System.Runtime.InteropServices.ComVisible(true)>]
type MidpointRounding = 
Public Enum MidpointRounding
Vererbung
MidpointRounding
Attribute

Felder

AwayFromZero 1

Die Strategie der Rundung auf die nächste Zahl, und wenn eine Zahl zwischen zwei anderen halbwegs gerundet ist, wird es auf die nächste Zahl gerundet, die von null entfernt ist.

ToEven 0

Die Strategie der Rundung auf die nächste Zahl und wenn eine Zahl zwischen zwei anderen halbwegs gerundet wird, wird sie auf die nächste sogar Zahl gerundet.

ToNegativeInfinity 3

Die Strategie der nach unten gerichteten Rundung, mit dem Ergebnis, das am nächsten ist und nicht größer als das unendlich genaue Ergebnis.

ToPositiveInfinity 4

Die Strategie der nach oben gerichteten Rundung, mit dem Ergebnis, das am nächsten ist und nicht kleiner als das unendlich genaue Ergebnis.

ToZero 2

Die Strategie der gerichteten Rundung in Richtung Null, mit dem Ergebnis, das am nächsten ist und nicht größer als das unendlich genaue Ergebnis.

Beispiele

Im folgenden Beispiel wird die Math.Round Methode in Verbindung mit der MidpointRounding Aufzählung veranschaulicht:

decimal result;

// Round a positive value using different strategies.
// The precision of the result is 1 decimal place.

result = Math.Round(3.45m, 1, MidpointRounding.ToEven);
Console.WriteLine($"{result} = Math.Round({3.45m}, 1, MidpointRounding.ToEven)");
result = Math.Round(3.45m, 1, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result} = Math.Round({3.45m}, 1, MidpointRounding.AwayFromZero)");
result = Math.Round(3.47m, 1, MidpointRounding.ToZero);
Console.WriteLine($"{result} = Math.Round({3.47m}, 1, MidpointRounding.ToZero)\n");

// Round a negative value using different strategies.
// The precision of the result is 1 decimal place.

result = Math.Round(-3.45m, 1, MidpointRounding.ToEven);
Console.WriteLine($"{result} = Math.Round({-3.45m}, 1, MidpointRounding.ToEven)");
result = Math.Round(-3.45m, 1, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result} = Math.Round({-3.45m}, 1, MidpointRounding.AwayFromZero)");
result = Math.Round(-3.47m, 1, MidpointRounding.ToZero);
Console.WriteLine($"{result} = Math.Round({-3.47m}, 1, MidpointRounding.ToZero)\n");

/*
This code example produces the following results:

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

-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
-3.4 = Math.Round(-3.47, 1, MidpointRounding.ToZero)
*/
Dim result As Decimal = 0D
Dim posValue As Decimal = 3.45D
Dim negValue As Decimal = -3.45D

' Round a positive value using different strategies.
' 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)
result = Math.Round(posValue, 1, MidpointRounding.ToZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToZero)",
                   result, posValue)
Console.WriteLine()

' Round a negative value using different strategies.
' 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)
result = Math.Round(negValue, 1, MidpointRounding.ToZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToZero)",
                   result, negValue)
Console.WriteLine()

'This code example produces the following results:
'
'        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.ToZero)
'
'        -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.ToZero)
'

Hinweise

Verwenden Sie MidpointRounding mit entsprechenden Überladungen von Math.Round, MathF.Roundund Decimal.Round stellen Sie mehr Kontrolle über den Rundungsprozess bereit.

Es gibt zwei Gesamtrundenstrategien, runden zu nächster und direktes Runden, und jedes Enumerationsfeld nimmt an genau einer dieser Strategien teil.

Rund zu nächster

Felder:

Ein runder zu nächster Vorgang nimmt eine ursprüngliche Zahl mit impliziter oder angegebener Genauigkeit ein; untersucht die nächste Zahl, die sich auf dieser Genauigkeit plus einer befindet; und gibt die nächste Zahl mit derselben Genauigkeit wie die ursprüngliche Zahl zurück. Für positive Zahlen, wenn die nächste Zahl von 0 bis 4 liegt, liegt die nächste Zahl in der negativen Unendlichkeit. Wenn die nächste Zahl von 6 bis 9 liegt, ist die nächste Zahl in Richtung positive Unendlichkeit. Bei negativen Zahlen, wenn die nächste Zahl von 0 bis 4 liegt, ist die nächste Zahl in richtung positiver Unendlichkeit. Wenn die nächste Zahl von 6 bis 9 liegt, liegt die nächste Zahl in der negativen Unendlichkeit.

Wenn die nächste Ziffer von 0 bis 4 oder 6 bis 9 liegt, MidpointRounding.AwayFromZero MidpointRounding.ToEven wirkt sich dies nicht auf das Ergebnis des Rundungsvorgangs aus. Wenn die nächste Zahl jedoch 5 ist, was der Mittlere Punkt zwischen zwei möglichen Ergebnissen ist, und alle verbleibenden Ziffern null sind oder keine verbleibenden Ziffern vorhanden sind, ist die nächste Zahl mehrdeutig. In diesem Fall können Sie mithilfe der Rundungsmodi MidpointRounding angeben, ob der Rundungsvorgang die nächste Zahl von null oder der nächstgelegenen Sogarnummer zurückgibt.

In der folgenden Tabelle werden die Ergebnisse der Rundung von negativen und positiven Zahlen in Verbindung mit den nächsten Modi veranschaulicht. Die Genauigkeit, die zum Runden der Zahlen verwendet wird, ist Null, was bedeutet, dass sich die Zahl nach dem Dezimalpunkt auf den Rundungsvorgang auswirkt. Beispielsweise ist für die Zahl -2.5 die Ziffer nach dem Dezimalpunkt 5. Da diese Zahl der Mittelpunkt ist, können Sie einen MidpointRounding Wert verwenden, um das Ergebnis der Rundung zu bestimmen. Wenn AwayFromZero angegeben wird, wird -3 zurückgegeben, da es sich um die nächste Zahl entfernt von Null mit einer Genauigkeit von Null befindet. Wenn ToEven angegeben wird, wird -2 zurückgegeben, da es die nächste sogar Zahl mit einer Genauigkeit von Null ist.

Originalnummer 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

Gerundet

Felder:

Ein gerichteter Rundungsvorgang nimmt eine ursprüngliche Zahl mit impliziter oder angegebener Genauigkeit und gibt die nächste nächstgelegene Zahl in einer bestimmten Richtung mit derselben Genauigkeit wie die ursprüngliche Zahl zurück. Geleitete Modi zum MidpointRounding Steuern, auf welche vordefinierte Zahl die Rundung ausgeführt wird.

In der folgenden Tabelle werden die Ergebnisse der Rundung einiger negativer und positiver Zahlen in Verbindung mit den Richtungsrundenmodi veranschaulicht. Die Genauigkeit, die zum Runden der Zahlen verwendet wird, ist Null, was bedeutet, dass die Zahl vor dem Dezimalpunkt durch den Rundungsvorgang betroffen ist.

Originalnummer 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

Gilt für: