Easy isn't it.. 100% / number of people 100/2 = 50%
Now 100/3….= 33.33333333333333…….
One compromised solution is 33.33, 33.33 and 33.34. so one of them will get a 0.01 percent more,
if that is not a big deal.
I ended up writing some code for this and I hope it will be useful
for you.
See C# sample code below
private
List<double>
GetPercentages(double numberOfItems)
{
List<double> percentages = new
List<double>();
double
totalPercentage = 100.00;
double
averagePercentage = Math.Round(totalPercentage
/ numberOfItems, 2);
double
reminder = Math.Round(100 -
(averagePercentage * numberOfItems),2);
for
(int i = 0; i < numberOfItems; i++)
{
double
percentageValue = averagePercentage;
if
(reminder != 0)
{
if
(reminder > 0)
{
reminder = Math.Round(reminder - 0.01,2);
percentageValue +=
0.01;
}
else
{
reminder = Math.Round(reminder + 0.01,2);
percentageValue -=
0.01;
}
}
percentages.Add(Math.Round(percentageValue,2));
percentages.Sort();
}
return
percentages;
}
Please add a comment if this is useful.
No comments:
Post a Comment