in reply to
accurately rounding numbers for percentages

What you're asking is not possible. Anytime you round a number you're going to introduce error, how much error will depend on how much you're rounding. Add enough errors together and your total will *always* be off from the "expected" total (in this case 100%).

The only way around this is to go ahead and round the individual entries to whole numbers for display, but when calculating the total don't add the rounded entries, add the *unrounded* entries, and then round the result for display, if you want.