.NET-HILFE

C# Round (Wie es für Entwickler funktioniert)

Veröffentlicht 29. August 2023
Teilen Sie:

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.

Einführung in die Rundung

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.

Warum runde Zahlen?

  1. vereinfachung": Gerundete Zahlen sind oft leichter zu lesen und zu verstehen.

  2. genauigkeit": In manchen Fällen ist es effizienter, mit gerundeten Werten statt mit exakten Werten zu arbeiten, insbesondere bei Währungsberechnungen.

Häufige Rundungsszenarien

  1. nächstliegende ganze Zahl": Rundet einen Dezimalwert auf die nächstliegende ganze Zahl.

  2. bestimmte Anzahl von Nachkommastellen": Runden Sie eine Zahl auf eine bestimmte Anzahl von Dezimalstellen, z. B. 15,678" auf zwei Dezimalstellen zu 15,68".

Grundlagen der Rundung in C##

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.

Abrunden auf den nächstliegenden ganzzahligen Wert

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}")
VB   C#

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.

Rundung auf eine bestimmte Anzahl von Dezimalstellen

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}")
VB   C#

Die Methode rundet den ursprünglichen Wert 7.34567 auf 7.35, da wir angegeben haben, dass sie auf zwei Dezimalstellen runden soll.

Modi der Mittelpunktsrundung

Beim Umgang mit Mittelwerten (die äquidistant zu zwei potenziell gerundeten Werten sind)c# bietet einen "MidpointRounding"-Modus, um festzulegen, wie diese Werte gerundet werden.

Standard-Rundung

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
VB   C#

Festlegen eines "MidpointRounding"-Modus

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}")
VB   C#

In diesem Beispiel sorgt der Modus MidpointRounding.AwayFromZero dafür, dass die Zahl auf 6 gerundet wird.

Math.Round mit dezimalen Werten verwenden

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}")
VB   C#

Die Dezimalzahl "5,678" wird auf "5,7" gerundet, wenn sie auf eine Dezimalstelle aufgerundet wird.

Benutzerdefinierte Rundungsfunktionen

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.

Aufrunden

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}")
VB   C#

Die Dezimalzahl "4,3" wird auf "5" aufgerundet.

Abrunden

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}")
VB   C#

Die Dezimalzahl "4,7" wird auf "4" abgerundet.

Arbeiten mit String-Eingabe

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.

Parsing und Rundung

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}")
VB   C#

Original: 4.5678, Gerundet: 4.57

Rundung in Finanzanwendungen

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.

Beispiel Rundung Währung

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}")
VB   C#

Der obige Code rundet den Wert auf zwei Dezimalstellen ab, um den meisten Währungsstandards zu entsprechen.

Fehlersuche und Fehlerbehebung bei Rundungsfehlern

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.

Häufige Fallstricke

  • doppelpräzision": Der Double-Typ stellt Dezimalzahlen möglicherweise nicht immer exakt dar, was zu unerwarteten Rundungsergebnissen führt. Die Verwendung des Dezimaltyps kann dies abmildern.
  • falscher Modus "MidpointRounding": Stellen Sie sicher, dass Sie den richtigen "MidpointRounding"-Modus für Ihre spezifischen Anforderungen verwenden. Die falsche Verwendung dieser Modi kann zu Rundungsfehlern führen.

Wie man debuggt

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.

Iron Suite

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

C# Runde (Wie es für Entwickler funktioniert) Abbildung 1

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

C# Runde (Wie es für Entwickler funktioniert) Abbildung 2

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

C# Runde (Wie es für Entwickler funktioniert) Abbildung 3

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

C# Runde (Wie es für Entwickler funktioniert) Abbildung 4

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.

Schlussfolgerung

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.

< PREVIOUS
C# Wörterbuch Trygetvalue (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# Logische Operatoren (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >