my $x = 8.78; my $y = $x * 100; my $z = $x * 1000; printf "%08d\n", $y; # prints 00000877 - wrong printf "%08d\n", "$y"; # prints 00000878 - right printf "%3.5f\n", $y; # prints 878.00000 - right printf "%08d\n", $z; # prints 00008780 - right