sub round { my $n = shift; my $abs = abs( $n ); return 0 if $abs < 0.5; my $sign = $n/$abs; return int( $abs + 0.5 ) * ( $n/$abs ); } print round( $_ ), $/ for qw( -1.5 -0.5 0 0.5 1.5 ); __END__ -2 -1 0 1 2