Anforderungen: Wird oft zum Runden verwendet und ist nicht sehr empfindlich gegenüber Präzisionsanforderungen.
Um zwei Dezimalstellen abzurunden, schrieb der Entwickler folgenden Code:
Der Code ist sehr einfach, EntwicklerDas tatsächliche Ergebnis war 12,12, was dem erwarteten Rundungsergebnis von 12,13 widersprach。
Der Grund für dieses Ergebnis ist, dass Math.Round die Rundungsregel nicht standardmäßig verwendet, sondern Runden, um gerade zu werden.
Runden Sie auf fünf auf, um ein Paar zu bilden
Das sogenannte Runden von sechs auf fünf bedeutet, dass nach Bestimmung der signifikanten Ziffern, wenn die nächste signifikante Ziffer kleiner oder gleich 4 ist, sie nach unten abgerundet wird; wenn sie größer als oder gleich 6 ist, runden wir um eins auf. Wenn die nächste signifikante Ziffer 5 ist,
- Wenn die Zahl vor 5 ungerade ist, runden Sie fünf auf und rücken Sie um eins voran
- Wenn 5 vor einer geraden Zahl steht, überspringe 5 (0 ist gerade).
Statistisch ist das Runden auf gerade Grad genauer als das Runden von fünf, denn bei vielen Berechnungen kann das Runden von fünf zu eins zu einer größeren Zahl führen.
Zum Beispiel:
1,15+1,25+1,35+1,45 = 5,2
Wenn die signifikanten Ziffern eine Dezimalstelle sind, erhält man das Ergebnis nach dem Rundungsprinzip
1,2 + 1,3 + 1,4 + 1,5 = 5,4
Das Ergebnis, das durch Rundung auf fünf gerade Werte erzielt wird, ist
1,2 + 1,2 + 1,4 + 1,4 = 5,2
Dies zeigt, dass die Rundungsregel genauere Ergebnisse liefert.
Mathe-Runde.
Wie nutzt man also Math.Round, um die erwartete Rundung zu erreichen?
Tatsächlich bietet Math.Round in C# viele Überlastungsmethoden, darunter zwei Methoden:
Beide Methoden bieten einen dritten Parameter namens Modus, der eine Aufzählungsvariable von MidpointRounding mit zwei auswählbaren Werten ist
- AwayFromZero – Aufrundung
- ToEven – Rundung auf gerade Rundung
Wenn wir also ein ideales abgerundetes Ergebnis wollen, können wir folgenden Code verwenden:
MidpointRounding-Aufzählung, wie unten gezeigt:
Referenz:Der Hyperlink-Login ist sichtbar. |