Encontre o número mais alto de um conjunto a ser arredondado para baixo e arredondá-lo para cima

Como o título descreve, eu tenho um conjunto de objetos - chame-osAlocações - que contêm uma descrição e um número. Todos os números no conjunto somam 100%, mas, para fins de exibição, às vezes arredondar para uma porcentagem inteira. Em alguns casos extremos, tendo arredondado os números, acabo com 99%.

Exemplo:

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!)

A solução solicitada, que é imperfeita, mas servirá, é encontrar a mais alta a ser arredondada para baixo e arredondada. No exemplo acima, 1,42% se tornaria 2% quando arredondado.Edit: Por "Mais alto a ser arredondado", quero dizer o que está sendo arredondado mais longe. Portanto, 1,42% está sendo arredondado para baixo em 0,42, enquanto o 65,23 está sendo arredondado para baixo em 0,23

Então agora o código, eu tenho uma classe

public class Allocation
{
  public string Description {get;set;}
  public doubel Percentage {get;set;}
}

E estes são realizados em umIEnumerable<Allocation>. Então, potencialmente usando o LINQ, como posso determinar qual é o único a arredondar. Ou, mais especificamente, como posso gerar um novoIEnumerable<Allocation> com os números arredondados.

Se alguém tiver alguma outra sugestão para sempre fazer porcentagem arredondada, sempre será igual a 100%, isso seria ainda melhor!

questionAnswers(5)

yourAnswerToTheQuestion