in reply to How to calculate the sum of columns to be equal to 100?
Laurent_R is correct, but you can get close(r) to what you want with a better rounding function. Consider:
#! perl use strict; use warnings; my @fractions = (3 / 11, 2 / 11, 1 / 11, 5 / 11); my @rounded_old = map { round_old($_) } @fractions; my @rounded_new = map { round_new($_) } @fractions; my $sum_old = 0; $sum_old += $_ for @rounded_old; my $sum_new = 0; $sum_new += $_ for @rounded_new; printf "\nOld sum: %.2f new sum: %.2f\n", $sum_old, $sum_new; sub round_old { return 100 * sprintf("%.2f", shift); } sub round_new { return sprintf("%.2f", int((1e5 * shift) + 0.5) / 1e3); }
Output:
22:10 >perl 688_SoPW.pl Old sum: 99.00 new sum: 99.99 22:10 >
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|