Siehe MSDN:
Dezimal Math.Round (Decimald)
Runden ein Dezimalwert auf die nächste ganze Zahl, und Runden midpoint Werte zur nächsten geraden Zahl (Beispiel).
"Mittelpunkt" bedeutet hier .5
; die gerade Zahl in Ihrem Fall ist 2
. Wenn Sie auf diese Weise 3.5
gerundet haben, würde dies 4
ergeben.
Wenn Sie stattdessen Rundung „von Null weg“ verwenden, können Sie the System.MidpointRounding.AwayFromZero
enum verwenden:
decimal d = 2.5M;
decimal roundedD = Math.Round(d, MidpointRounding.AwayFromZero); // results in 3
In Bezug auf, warum es Mittelpunkt Rundung verwendet standardmäßig anstelle von „weg von Null (AKA„bankübliche Rundung“) "Rundung, see this answer. Angeblich ist es ein besserer Algorithmus (d. H. Über viele Iterationen hinweg effizienter).
Sehr ähnlich klassische Rundung verwenden möchten: http://stackoverflow.com/questions/977796/why-does-math-round2-5- return-2-statt-of-3 – pmcoltrane
ah ja, du hast Recht, ich habe diese Frage nicht gesehen. Danke, dass du es aufgezeigt hast. – Denis