Das Runden von Dezimalwerten ist ein entscheidender Aspekt vieler C#-Anwendungen, insbesondere bei Finanzberechnungen oder der Präsentation von Daten für Benutzer. Dieser Artikel untersucht die beiden wichtigsten Methoden hierfür: decimal.Round()
und Math.Round()
, hebt deren Unterschiede hervor und hilft Ihnen bei der Auswahl des optimalen Ansatzes für Ihre spezifischen Bedürfnisse.
Inhaltsverzeichnis
- Runden von Dezimalzahlen mit
decimal.Round()
- Runden von Dezimalzahlen mit
Math.Round()
- Auswahl der richtigen Rundungsmethode
Runden von Dezimalzahlen mit decimal.Round()
Die Methode decimal.Round()
wurde speziell für das Runden von Dezimalwerten entwickelt und bietet eine überlegene Kontrolle über den Rundungsprozess. Ein Hauptmerkmal ist die Möglichkeit, die MidpointRounding
-Strategie anzugeben, die bestimmt, wie Werte, die genau in der Mitte zwischen zwei möglichen gerundeten Werten liegen, behandelt werden. Zwei gängige Strategien sind:
MidpointRounding.AwayFromZero
(Standard): Rundet den Mittelpunktwert von Null weg. Beispielsweise wird 2,5 auf 3 gerundet und -2,5 auf -3.MidpointRounding.ToEven
: Rundet den Mittelpunktwert auf die nächste gerade Zahl. Beispielsweise wird 2,5 auf 2 und 3,5 auf 4 gerundet. Dieser Ansatz wird in der statistischen Analyse oft bevorzugt, um Verzerrungen zu minimieren.
So verwenden Sie decimal.Round()
:
using System;
public class DecimalRoundingExample
{
public static void Main(string[] args)
{
decimal value1 = 2.555m;
decimal value2 = 2.5m;
decimal value3 = -2.5m;
// Weg von Null (Standard)
Console.WriteLine($"{value1} gerundet: {decimal.Round(value1, 2)}");
Console.WriteLine($"{value2} gerundet: {decimal.Round(value2, 2)}");
Console.WriteLine($"{value3} gerundet: {decimal.Round(value3, 2)}");
// Auf gerade
Console.WriteLine($"n{value1} gerundet (ToEven): {decimal.Round(value1, 2, MidpointRounding.ToEven)}");
Console.WriteLine($"{value2} gerundet (ToEven): {decimal.Round(value2, 2, MidpointRounding.ToEven)}");
Console.WriteLine($"{value3} gerundet (ToEven): {decimal.Round(value3, 2, MidpointRounding.ToEven)}");
}
}
Runden von Dezimalzahlen mit Math.Round()
Die Methode Math.Round()
bietet einen einfacheren Ansatz zum Runden, jedoch mit weniger Kontrolle. Sie verwendet standardmäßig MidpointRounding.AwayFromZero
. Obwohl Sie MidpointRounding.ToEven
angeben können, wird decimal.Round()
im Allgemeinen aufgrund seiner Klarheit und Präzision empfohlen, insbesondere bei Finanzanwendungen.
using System;
public class MathRoundingExample
{
public static void Main(string[] args)
{
decimal value1 = 2.555m;
// Weg von Null (Standard)
Console.WriteLine($"{value1} gerundet: {Math.Round(value1, 2)}");
// Auf gerade (explizit angegeben)
Console.WriteLine($"n{value1} gerundet (ToEven): {Math.Round(value1, 2, MidpointRounding.ToEven)}");
}
}
Auswahl der richtigen Rundungsmethode
Für Anwendungen, die ein präzises Runden erfordern, insbesondere Finanzberechnungen, ist decimal.Round()
mit expliziter Angabe von MidpointRounding
die bevorzugte Wahl. Für weniger kritische Szenarien, in denen das Standardrundungsverhalten ausreicht, bietet Math.Round()
eine prägnantere Lösung.