Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Decimal.Round-Methode: (Decimal, Int32, MidpointRounding)

 

Veröffentlicht: Oktober 2016

Rundet einen Dezimalwert auf eine angegebene Genauigkeit. Ein Parameter gibt an, wie der Wert gerundet wird, wenn er genau zwischen zwei Zahlen liegt.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static decimal Round(
	decimal d,
	int decimals,
	MidpointRounding mode
)

Parameter

d
Type: System.Decimal

Eine zu rundende Dezimalzahl.

decimals
Type: System.Int32

Die Anzahl der signifikanten Dezimalstellen (Genauigkeit) im Rückgabewert.

mode
Type: System.MidpointRounding

Ein Wert, der angibt, wie d gerundet wird, wenn es genau zwischen zwei Zahlen liegt.

Rückgabewert

Type: System.Decimal

Die Zahl, die dem d-Parameter am nächsten ist, der die gleiche Genauigkeit wie der decimals-Parameter aufweist. Wenn d genau in der Mitte zwischen zwei Zahlen liegt (von denen eine gerade und die andere ungerade ist), bestimmt der mode-Parameter, welche der beiden Zahlen zurückgegeben wird. Wenn die Genauigkeit von d kleiner als decimals ist, wird d unverändert zurückgegeben.

Exception Condition
ArgumentOutOfRangeException

decimals ist kleiner als 0 (null) oder größer als 28.

ArgumentException

mode ist kein System.MidpointRounding-Wert.

OverflowException

Das Ergebnis liegt außerhalb des Bereichs eines Decimal-Objekts.

Die decimals Parameter gibt die Anzahl der signifikanten Dezimalstellen im Rückgabewert und reicht von 0 bis 28. Wenn decimals NULL ist, wird eine ganze Zahl zurückgegeben.

In der Mitte liegenden Werten ist der Wert nach der am wenigsten signifikante Ziffer in das Ergebnis genau halbem Weg zwischen zwei Zahlen. Beispielsweise ist 3.47500 Mitte liegenden Werten wird jedoch werden auf zwei Dezimalstellen gerundet und 7.500 ist Mitte liegenden Werten aus, wenn es auf eine ganze Zahl gerundet. In diesen Fällen der nächste Wert kann nicht leicht identifiziert werden ohne eine Rundung gilt, ist die mode Argument. Die Round(Decimal, Int32, MidpointRounding) Methode unterstützt zwei Rundung Konventionen für die Behandlung Mittelpunkt-Werte.

Aufgerundet.

Mittelpunkt Werte werden auf die nächste Zahl von NULL Weg gerundet. 3,75 abgerundet, 3.8, 3,85 Rundet auf 3.9-3.75 zu-3.8, rundet und-3.85 auf-3.9 gerundet. Diese Form der Rundung wird dargestellt, durch die MidpointRounding.AwayFromZero Enumerationsmember.

Aufgerundet ist die am häufigsten bekannten Form der Rundung.

Dies gilt auch für Rundung oder unverzerrte Rundung

Mittelpunkt Werte werden auf die nächste gerade Zahl gerundet. Beispielsweise 3,75 und 3,85 gerundet wird, um 3.8 und-3.75 und-3.85 gerundet wird, um-3.8. Diese Form der Rundung wird dargestellt, durch die MidpointRounding.ToEven Enumerationsmember.

Auf den nächsten Wert gerundet wird der Standardform des Rundung in finanzielle und statistische Vorgängen verwendet. Es entspricht dem Standard IEEE 754, Abschnitt 4. Bei Verwendung in mehreren Rundungsoperationen verringert sich die Rundungsfehler, die vom Mittelpunkt der Werte in einer Richtung runden verursacht wird. In einigen Fällen kann diese Rundungsfehler erheblich sein.

Im folgenden Beispiel wird veranschaulicht, wie die Round(Decimal, Int32, MidpointRounding) Methode mit dem MidpointRounding Enumeration.

// 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)

*/

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: