whirlwind
TDD infected, paranoid
Даже работая с decimal, никто не застрахован от сюрпризов с округлением. Все зависит от того, как считать. При рассчете группы значений, каждое из который является некой долей от базы рассчета, последнее из этих значений нужно рассчитывать не произведением, а разностью между базой рассчета и суммой предыдущих значений. Какая бы база не была, автоматом она до этого не догадается.