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