Ich möchte dies mit Hilfe des Math.Round
Funktion
Antworten
Zu viele Anzeigen?Hier sind einige Beispiele:
decimal a = 1.994444M;
Math.Round(a, 2); //returns 1.99
decimal b = 1.995555M;
Math.Round(b, 2); //returns 2.00
Vielleicht möchten Sie sich auch die Rundung der Banker mit der folgenden Überlast ansehen:
Math.Round(a, 2, MidpointRounding.ToEven);
Hier finden Sie weitere Informationen dazu aquí .
Wenn Sie einen String möchten
> (1.7289).ToString("#.##")
"1.73"
Oder eine Dezimalzahl
> Math.Round((Decimal)x, 2)
1.73m
Aber denken Sie daran! Die Rundung ist nicht distributiv, d.h. round(x*y) != round(x) * round(y)
. Runden Sie also nicht bis zum Ende einer Berechnung, da Sie sonst an Genauigkeit verlieren.
Wikipedia hat eine schöne Seite zur Rundung im Allgemeinen.
Alle (verwalteten) .NET-Sprachen können einen der Rundungsmechanismen der Common Language Run Time (CLR) verwenden. Zum Beispiel kann die Math.Round() (wie oben erwähnt) ermöglicht es dem Entwickler, die Art der Rundung festzulegen (Rundung auf gerade oder weg von Null). Die Methode Convert.ToInt32() und ihre Variationen verwenden Rund-um-die-Uhr . Die Obergrenze() y Floor() Methoden verwandt sind.
Sie können aufrunden mit benutzerdefinierte numerische Formatierung auch.
Beachten Sie, dass Dezimal.Runden() verwendet eine andere Methode als Math.Round();
Hier ist ein nützliche Funktion t über den Rundungsalgorithmus der Bank. Siehe einen von Raymonds humorvollen Beiträge hier über Rundungen...
- See previous answers
- Weitere Antworten anzeigen