#! 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); }