% cat sprin #! /usr/bin/perl -w use strict; for( 0..9 ) { my $num0 = "1.$_"; my $num1 = "1.0$_"; my $num2 = "1.00$_"; printf "$num0 => %0.0f $num1 => %0.1f $num2 => %0.2f\n", $num0, $num1, $num2; } #### % perl sprin 1.0 => 1 1.00 => 1.0 1.000 => 1.00 1.1 => 1 1.01 => 1.0 1.001 => 1.00 1.2 => 1 1.02 => 1.0 1.002 => 1.00 1.3 => 1 1.03 => 1.0 1.003 => 1.00 1.4 => 1 1.04 => 1.0 1.004 => 1.00 1.5 => 2 1.05 => 1.1 1.005 => 1.00 1.6 => 2 1.06 => 1.1 1.006 => 1.01 1.7 => 2 1.07 => 1.1 1.007 => 1.01 1.8 => 2 1.08 => 1.1 1.008 => 1.01 1.9 => 2 1.09 => 1.1 1.009 => 1.01 #### include #include int main( int argc, char **argv ) { char *fmt = *++argv; double f = atof( *++argv ); char buf[128]; sprintf( buf, "%%s => %s\n", fmt ); printf( buf, *argv, f ); return 0; } #### % ./s %0.0f 0.4 0.4 => 0 % ./s %0.0f 0.5 0.5 => 0 % ./s %0.0f 0.6 0.6 => 1 % ./s %0.0f 1.4 1.4 => 1 % ./s %0.0f 1.5 1.5 => 2 % ./s %0.0f 1.6 1.6 => 2