ft2str( $feet ); # Converts $feet to a pretty format # (rounding to the nearest 1/16"). ft2str( $feet, 4 ); # Rounds to the nearest 1/4" inch instead. ft2str( $feet, 1 ); # Rounds to the nearest inch. #### use strict; sub ft2str { my $ft= shift(@_); my $denom= @_ ? shift(@_) : 16; my $numer= int( 0.5 + 12*$denom*$ft ); my $in= int($numer/$denom); $numer -= $denom*$in; $ft= int($in/12); $in -= 12*$ft; if( $numer ) { until( $numer % 2 || $denom % 2 ) { $numer /= 2; $denom /= 2; } $in .= " $numer/$denom" } return qq($in") if ! $ft; return qq($ft') if ! $in; return qq($ft' $in"); } print ft2str(12.1), "\n"; print ft2str(12.1,8), "\n"; print ft2str(0.01), "\n"; print ft2str(12.05,2), "\n"; print ft2str(12.01,2), "\n"; __END__ Produces: 12' 1 3/16" 12' 1 1/4" 0 1/8" 12' 0 1/2" 12'