Kann mir jemand erklären, warum der untere Code 1100 in beiden Fällen ausgibt?Warum ändert Math.Round() MidpointRounding nach Dezimal 1100
decimal toEven = 1100.5m;
decimal awayFromZero = 1099.5m;
Console.WriteLine(Math.Round(toEven)); // output 1100
Console.WriteLine(Math.Round(awayFromZero)); // output 1100
Es sieht aus wie die Math.Round() ändert MidpointRounding Strategie nach der Nummer 1100. Wenn Sie Math.Round() auf Dezimalstellen unter 1100 mit einer 0,5 dezimal Math.Round() verwendet die AwayFromZero MidpointRounding standardmäßig. Wenn Sie Dezimalzahlen über 1100 verwenden, verwendet Math.Round() standardmäßig ToEven MidpointRound. Warum?
Ich weiß, dass ich den MidpointRounding selbst einstellen kann, um das Problem zu beheben. Ich bin nur neugierig, warum Math.Round() so funktioniert.
Wie haben Sie '1100' gefunden? Es wird standardmäßig immer auf die gerade Zahl gerundet. – Groo