Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Das Runden von Zahlen ist ein grundlegendes mathematisches Konzept, das häufig in der Praxis angewendet wird. In C# wird die methode Math.Round
erleichtert dies, indem es Ihnen ermöglicht, Werte auf den nächsten ganzzahligen Wert oder auf eine bestimmte Anzahl von Dezimalstellen zu runden. Dieses Tutorial beschäftigt sich mit den Feinheiten des Rundens in C# und veranschaulicht, wie Sie sich diese leistungsstarke Methode zunutze machen können.
Das Runden einer Zahl bedeutet, dass sie auf den nächsten ganzzahligen oder dezimalen Wert gerundet wird, um sie zu vereinfachen oder um einer bestimmten Anforderung zu entsprechen. Wenn Sie zum Beispiel die Dezimalzahl "3,14159" haben, würde das Runden auf zwei Dezimalstellen "3,14" ergeben.
vereinfachung": Gerundete Zahlen sind oft leichter zu lesen und zu verstehen.
nächstliegende ganze Zahl": Rundet einen Dezimalwert auf die nächstliegende ganze Zahl.
C# bietet mit der Methode Math.Round
ein robustes System für die Rundung. Diese Methode kann verschiedene Argumente und Parameter akzeptieren, um die Rundungsoperation anzupassen.
Die einfachste Form der Methode Math.Round
rundet einen Double-Wert auf den nächstliegenden ganzzahligen Wert. Wenn die gegebene Zahl gleich weit von zwei ganzen Zahlen entfernt ist, wird auf die nächste gerade Zahl gerundet, was oft als "Bankrundung" bezeichnet wird
double originalValue = 4.5;
double roundedValue = Math.Round(originalValue);
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}");
double originalValue = 4.5;
double roundedValue = Math.Round(originalValue);
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}");
Dim originalValue As Double = 4.5
Dim roundedValue As Double = Math.Round(originalValue)
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}")
Im obigen Beispiel ist "*4,5" gleich weit von "4" und "5" entfernt. Da "4" die nächstgelegene gerade Zahl ist, gibt die Methode "4" zurück.
Sie können eine doppelt genaue Gleitkommazahl auch auf eine bestimmte Anzahl von Dezimalstellen runden, indem Sie ein zusätzliches Argument verwenden:
double value = 7.34567;
double rounded = Math.Round(value, 2); // Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
double value = 7.34567;
double rounded = Math.Round(value, 2); // Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
Dim value As Double = 7.34567
Dim rounded As Double = Math.Round(value, 2) ' Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}")
Die Methode rundet den ursprünglichen Wert 7.34567
auf 7.35
, da wir angegeben haben, dass sie auf zwei Dezimalstellen runden soll.
Beim Umgang mit Mittelwerten (die äquidistant zu zwei potenziell gerundeten Werten sind)c# bietet einen "MidpointRounding"-Modus, um festzulegen, wie diese Werte gerundet werden.
Standardmäßig rundet Math.Round
die Mittelwerte auf die nächste gerade Zahl.
double valueOne = 4.5; // Rounded to 4
double valueTwo = 5.5; // Rounded to 6
double valueOne = 4.5; // Rounded to 4
double valueTwo = 5.5; // Rounded to 6
Dim valueOne As Double = 4.5 ' Rounded to 4
Dim valueTwo As Double = 5.5 ' Rounded to 6
Um eine bessere Kontrolle über die Rundung von Mittelpunktswerten zu erhalten, können Sie einen bestimmten Modus "MidpointRounding" als Parameter übergeben:
double value = 5.5;
double rounded = Math.Round(value, 0, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
double value = 5.5;
double rounded = Math.Round(value, 0, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
Dim value As Double = 5.5
Dim rounded As Double = Math.Round(value, 0, MidpointRounding.AwayFromZero)
Console.WriteLine($"Original: {value}, Rounded: {rounded}")
In diesem Beispiel sorgt der Modus MidpointRounding.AwayFromZero
dafür, dass die Zahl auf 6
gerundet wird.
Während wir die Rundung von Doppelwerten besprochen haben, unterstützt C# auch die Rundung von Dezimalwerten. Die Methoden sind analog, arbeiten aber mit dem dezimalen Datentyp. Hier ein Beispiel
decimal decimalValue = 5.678m;
decimal roundedDecimal = Math.Round(decimalValue, 1); // Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}");
decimal decimalValue = 5.678m;
decimal roundedDecimal = Math.Round(decimalValue, 1); // Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}");
Dim decimalValue As Decimal = 5.678D
Dim roundedDecimal As Decimal = Math.Round(decimalValue, 1) ' Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}")
Die Dezimalzahl "5,678" wird auf "5,7" gerundet, wenn sie auf eine Dezimalstelle aufgerundet wird.
Manchmal müssen Sie spezielle Rundungsoperationen durchführen, die nicht von der Standardmethode Math.Round
abgedeckt werden. Durch das Schreiben von benutzerdefinierten Rundungsfunktionen haben Sie die vollständige Kontrolle über diesen Prozess.
Um immer auf die nächste Ganzzahl aufzurunden, können Sie die Methode Math.Ceiling
verwenden:
double value = 4.3;
double roundedUp = Math.Ceiling(value);
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}");
double value = 4.3;
double roundedUp = Math.Ceiling(value);
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}");
Dim value As Double = 4.3
Dim roundedUp As Double = Math.Ceiling(value)
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}")
Die Dezimalzahl "4,3" wird auf "5" aufgerundet.
Umgekehrt wird mit der Methode Math.Floor
auf den nächsten ganzzahligen Wert abgerundet:
double value = 4.7;
double roundedDown = Math.Floor(value);
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}");
double value = 4.7;
double roundedDown = Math.Floor(value);
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}");
Dim value As Double = 4.7
Dim roundedDown As Double = Math.Floor(value)
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}")
Die Dezimalzahl "4,7" wird auf "4" abgerundet.
In vielen Anwendungen werden Sie mit numerischen Werten in Form von Zeichenketten arbeiten. Das Parsing der Zeichenkette in ein Double oder eine Dezimalzahl, das Runden und die anschließende Rückkonvertierung können mit C# durchgeführt werden.
Das folgende Beispiel zeigt, wie man eine Zeichenkette mit einer Dezimalzahl runden kann:
string originalString = "4.5678";
double parsedValue = double.Parse(originalString);
double rounded = Math.Round(parsedValue, 2); // Rounds to two decimal places
string roundedString = rounded.ToString();
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}");
string originalString = "4.5678";
double parsedValue = double.Parse(originalString);
double rounded = Math.Round(parsedValue, 2); // Rounds to two decimal places
string roundedString = rounded.ToString();
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}");
Dim originalString As String = "4.5678"
Dim parsedValue As Double = Double.Parse(originalString)
Dim rounded As Double = Math.Round(parsedValue, 2) ' Rounds to two decimal places
Dim roundedString As String = rounded.ToString()
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}")
Original: 4.5678, Gerundet: 4.57
Bei der Arbeit mit Finanzanwendungen ist Präzision unerlässlich. Rundungsfehler können zu erheblichen Problemen führen. In solchen Fällen wird der Dezimaltyp bevorzugt, da er im Vergleich zu double eine höhere Genauigkeit aufweist.
Das folgende Beispiel veranschaulicht die Rundung eines Dezimalwerts, der eine Währung darstellt:
decimal originalValue = 1234.5678m;
decimal roundedValue = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}");
decimal originalValue = 1234.5678m;
decimal roundedValue = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}");
Dim originalValue As Decimal = 1234.5678D
Dim roundedValue As Decimal = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero)
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}")
Der obige Code rundet den Wert auf zwei Dezimalstellen ab, um den meisten Währungsstandards zu entsprechen.
Gelegentlich kann es vorkommen, dass Rundungsoperationen nicht die erwarteten Ergebnisse liefern. Diese Diskrepanzen könnten auf Probleme wie die Fließkommagenauigkeit bei doppelten Werten zurückzuführen sein.
Verwenden Sie Tools wie Protokollierung und Haltepunkte, um den Wert vor und nach dem Runden zu verfolgen. Eine Überprüfung des Originalwerts und der an die Rundungsmethode übergebenen Parameter kann normalerweise Unstimmigkeiten aufdecken.
Nachdem Sie die Grundlagen des Rundens in C# gemeistert haben, fragen Sie sich vielleicht, wie Sie Ihre Anwendungen auf die nächste Stufe bringen können, insbesondere beim Umgang mit komplexen Datenformaten. Die Iron Suite kann hier Ihr Retter sein. Diese Suite umfasst leistungsstarke Tools wie IronPDF, IronXL, IronOCR und IronBarcode. Lassen Sie uns genauer untersuchen, wie diese Tools in Ihre Rundungsvorgänge integriert werden können und Ihre Anwendungen weiter bereichern.
IronPDF ist eine robuste Bibliothek in C#, die für PDF-Erzeugung aus HTML, Redaktion und Verwaltung. Stellen Sie sich ein Szenario vor, in dem Sie nach der Durchführung von Rundungsoperationen einen Bericht im PDF-Format erstellen müssen. IronPDF kann Ihren C#-Code mühelos in hochwertige PDFs konvertieren.
IronXL bietet Funktionalitäten für die Arbeit mit Excel-Dateien, die es C#-Entwicklern ermöglichen, Excel-Tabellen zu lesen, zu schreiben und nahtlos zu bearbeiten. Mit IronXL können Sie dezimale oder doppelte Daten aus Excel-Blättern abrufen und Rundungsoperationen in C# durchführen.
IronOCR ist eine fortschrittliche optische Zeichenerkennung (OCR) bibliothek für C#, die Text aus Bildern und PDFs erkennen und extrahieren kann. Angenommen, Sie haben gescannte Dokumente oder Bilder mit numerischen Daten. Mit IronOCR können Sie diese Daten in C# extrahieren, verarbeiten oder abrunden.
IronBarcode ist ein leistungsfähiges Tool zum Erzeugen, Lesen und Klassifizieren von Barcodes und QR-Codes in .NET. In Kontexten, in denen gerundete Daten in Barcodes kodiert werden müssen (z. B. Produktpreise in einer Einzelhandelsanwendung)kann IronBarcode von unschätzbarem Wert sein.
Runden in C# ist ein vielschichtiges Thema mit Anwendungen in verschiedenen Bereichen. Verstehen der eingebauten Methoden wie "Mathe.Runden", "Mathe.Boden" und "Mathe.Decke" und wissen, wann der entsprechende Datentyp zu verwenden ist (doppelt oder dezimal) wird Sie in die Lage versetzen, numerische Daten effizient zu verarbeiten.
Die Verwendung von Rundungen in C# macht die Arbeit mit Zahlen einfacher. Was aber, wenn Sie mit diesen Zahlen noch mehr anfangen wollen? Das ist der Punkt, an dem die Iron Suite kommt herein. Es handelt sich um eine Reihe von Werkzeugen, die Sie bei der Arbeit mit PDFs, Excel-Dateien, Text in Bildern und Strichcodes unterstützen.
Jetzt kommt der spannende Teil: Sie können diese Tools kostenlos ausprobieren mit einer testlizenz um zu sehen, ob sie Ihnen gefallen. Wenn Sie sich für den Kauf einer solchen Lizenz entscheiden, kostet jede einzelne $749. Aber wenn Sie alle kaufen möchten, können Sie das ganze Set für nur zwei Werkzeuge bekommen. Das ist so, als würde man vier Werkzeuge kaufen, aber nur für zwei bezahlen! Sehen Sie sich die Iron Suite's an lizenzseite für weitere Informationen.
9 .NET API-Produkte für Ihre Bürodokumente