C-Sharp Math.Round rundet immer ab
Ahoi Leute.
Ich sitz hier gerade bei einer absoluten Kuriosität.
Man stelle sich folgenden Code vor:
int TaktRest = 30;
int Einheiten = 0;
decimal Sekunden = 246M;
decimal decEinheiten;
decEinheiten = Decimal.Divide(Sekunden, TaktRest); Da kommt dann richtig "8.2" raus
decEinheiten = Math.Round(decEinheiten, 0,MidpointRounding.AwayFromZero); Danach isses "8" ????
Einheiten = (int)decEinheiten;
Also "Midpoint.Rounding.AwayFromZero" sollte eigentlich immer auf die nächst höhere Ganzzahl aufrunden.
Also müsste 9 rauskommen.
Tuts aber nicht.
Hab ich hier irgendwo nen Denkfehler?
Ich sitz hier gerade bei einer absoluten Kuriosität.
Man stelle sich folgenden Code vor:
int TaktRest = 30;
int Einheiten = 0;
decimal Sekunden = 246M;
decimal decEinheiten;
decEinheiten = Decimal.Divide(Sekunden, TaktRest); Da kommt dann richtig "8.2" raus
decEinheiten = Math.Round(decEinheiten, 0,MidpointRounding.AwayFromZero); Danach isses "8" ????
Einheiten = (int)decEinheiten;
Also "Midpoint.Rounding.AwayFromZero" sollte eigentlich immer auf die nächst höhere Ganzzahl aufrunden.
Also müsste 9 rauskommen.
Tuts aber nicht.
Hab ich hier irgendwo nen Denkfehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 48071
Url: https://administrator.de/contentid/48071
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
das passt schon. Mittels "MidpointRounding.AwayFromZero" rundest du immer ab 0.5 auf, unterhalb von 0.5 ab.
Schau mal hier: http://msdn2.microsoft.com/en-us/library/system.midpointrounding.aspx
cu,
Alex
das passt schon. Mittels "MidpointRounding.AwayFromZero" rundest du immer ab 0.5 auf, unterhalb von 0.5 ab.
Schau mal hier: http://msdn2.microsoft.com/en-us/library/system.midpointrounding.aspx
cu,
Alex