Как следует из названия, у меня есть набор объектов - назовите их Распределения - которые содержат описание и номер.Все числа в наборе составляют до 100%, но для удобства я иногда округляю до целого процента.В некоторых крайних случаях, округляя числа, я получаю 99%.
Пример:
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!)
Запрашиваемое решение, которое несовершенно, но подойдет, состоит в том, чтобы найти самое высокое, которое нужно округлить в меньшую сторону, и вместо этого округлить в большую сторону.В приведенном выше примере 1,42% станет 2% при округлении. Редактировать: Под "наивысшим округляется" я подразумеваю тот, который округляется самым дальним.Следовательно, 1,42% округляется до 0,42, тогда как 65,23 округляется только до 0,23
Итак, теперь код, у меня есть класс
public class Allocation
{
public string Description {get;set;}
public doubel Percentage {get;set;}
}
И они хранятся вIEnumerable<Allocation>
.Итак, потенциально используя LINQ, как я могу определить, какой из них следует округлить.Или, более конкретно, как я могу сгенерировать новый IEnumerable<Allocation>
с округленными числами.
Если у кого-то есть какие-либо другие предложения всегда делать округленный процент, всегда равняется 100%, что было бы даже лучше!