2010-12-17 10 views

Antwort

6

prüfen dritten Parameter MidpointRounding.

standardmäßig verwendet MidpointRounding.ToEven, so

Math.Round(result,0); // 6.0 
//or 
Math.Round(result,0, MidpointRounding.ToEven); // 6.0 

//But: 
Math.Round(result,0, MidpointRounding.AwayFromZero); // 7.0 
1

Von MSDN:

Wenn die Bruchkomponente von d auf halbem Weg zwischen zwei ganzen Zahlen, von , die zurückgegeben wird, auch die andere ungerade, die gerade Zahl ist.

2

Diese Art der Rundung wird manchmal als Rundung zur nächsten oder Banker Rundung bezeichnet. Es minimiert Rundungsfehler, die sich aus der konsistenten Rundung eines Mittelpunktwerts in einer einzigen Richtung ergeben.

http://msdn.microsoft.com/en-us/library/3s2d3xkk.aspx

Beispiel:

//  11.1 --> 11 
//  11.2 --> 11 
//  11.3 --> 11 
//  11.4 --> 11 
//  11.5 --> 11 
//  11.6 --> 12 
1

decimal.Math.Round verwendet MidpointRounding.ToEven als Standard.

Wenn die Einerstelle ungerade ist, wird sie in eine gerade Zahl geändert. Ansonsten bleibt es unverändert. Dieses Verhalten folgt dem IEEE-Standard 754, Abschnitt 4. Es wird manchmal als Rundung zur nächsten oder Banker-Rundung bezeichnet. Es minimiert Rundungsfehler, die sich aus der konsistenten Rundung eines Mittelpunktwerts in einer einzigen Richtung ergeben.

+0

Das Dokument finden Sie hier: http://msdn.microsoft.com/en-us/library/3s2d3xkk.aspx und hier: http://msdn.microsoft.com/en-us/library/ms131274.aspx – HSBallina

1

Es muss aus dem gleichen Grund wie, warum

 Math.Round(6.5, 0); 

ähnlich ergibt 6 statt 7. Es läuft alles auf der MSDN-Dokumentation kommt link text, die beispielhaft

Console.WriteLine(Math.Round(3.45, 1)); //Returns 3.4. 
    Console.WriteLine(Math.Round(4.35, 1)); // Returns 4.4 

in another MDSN Doc Staaten ist

Der ganzzahlige nächste Parameter d. Wenn die Bruchkomponente von d auf halbem Wege zwischen zwei ganzen Zahlen liegt, von denen eine gerade und die andere ungerade ist, wird die gerade Zahl zurückgegeben. Beachten Sie, dass diese Methode ein Dezimalzeichen anstelle eines ganzzahligen Typs zurückgibt.

1

Verwenden Sie Math.Ceiling-Methode(). dezimal num1 = 390, num2 = 60, Ergebnis;
Ergebnis = Math.Decke (num1/num2);

+0

Nicht gleich Abrundung, 5.4 -> 6 statt 5. – Shurdoof