Finde die höchste Zahl in einer Menge, die abgerundet werden soll, und runde sie stattdessen auf
ie der Titel beschreibt, habe ich eine Reihe von Objekten - nennen Sie sie Zuweisungen - die eine Beschreibung und eine Nummer enthalten. Alle Zahlen im Set addieren sich zu 100%, aber zu Darstellungszwecken runde ich manchmal auf ein ganzes Prozent. In einigen Randfällen, wenn ich die Zahlen gerundet habe, erhalte ich 99%.
Beispiel
Description | Actual | Rounded
===============================
Allocation A | 65.23% | 65%
Allocation B | 25.40% | 25%
Allocation C | 7.95% | 8%
Allocation D | 1.42% | 1%
===============================
Total | 100% | 99% (Bad!)
Die gewünschte, aber unvollständige Lösung besteht darin, die höchste abzurundende Lösung zu finden und stattdessen aufzurunden. Im obigen Beispiel würden 1,42% gerundet zu 2%.Edit: Mit "Höchste abzurundende" meine ich diejenige, die am weitesten abgerundet wird. Demnach werden 1,42% um 0,42 abgerundet, während die 65,23 nur um 0,23 abgerundet werden
So nun der Code, ich habe eine Klasse
public class Allocation
{
public string Description {get;set;}
public doubel Percentage {get;set;}
}
Und diese werden in einem @ gehaltIEnumerable<Allocation>
. Wie kann ich also unter Verwendung von LINQ ermitteln, welches der zu rundenden Elemente ist? Oder genauer gesagt, wie kann ich ein neues @ generiereIEnumerable<Allocation>
mit gerundeten Zahlen.
Wenn jemand einen anderen Vorschlag hat, immer einen gerundeten Prozentsatz gleich 100% zu machen, wäre das sogar noch besser!