Я думаю, проблема в том, как округление работает в математике. Например, если у вас было 3 варианта с одним голосом, округление до ближайшего процента дало бы вам 33%, 33%, 33%, что, конечно, добавляет до 99%. Что совершенно правильно.
Невозможно сделать так, чтобы оно суммировалось с точностью до 100% без фальсификации данных (то есть в вышеупомянутом случае вы могли бы искусственно дать один вариант 34%, но это не отражало бы фактических голосов.)
Мое решение: показывать проценты с точностью до 1 знака после запятой, и не беспокойтесь о том, что оно составляет в точности 100%