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!

Antworten auf die Frage(10)

Ihre Antwort auf die Frage