Blame awklib/eg/lib/round.awk

Packit Service f629e6
# round.awk --- do normal rounding
Packit Service f629e6
#
Packit Service f629e6
# Arnold Robbins, arnold@skeeve.com, Public Domain
Packit Service f629e6
# August, 1996
Packit Service f629e6
Packit Service f629e6
function round(x,   ival, aval, fraction)
Packit Service f629e6
{
Packit Service f629e6
   ival = int(x)    # integer part, int() truncates
Packit Service f629e6
Packit Service f629e6
   # see if fractional part
Packit Service f629e6
   if (ival == x)   # no fraction
Packit Service f629e6
      return ival   # ensure no decimals
Packit Service f629e6
Packit Service f629e6
   if (x < 0) {
Packit Service f629e6
      aval = -x     # absolute value
Packit Service f629e6
      ival = int(aval)
Packit Service f629e6
      fraction = aval - ival
Packit Service f629e6
      if (fraction >= .5)
Packit Service f629e6
         return int(x) - 1   # -2.5 --> -3
Packit Service f629e6
      else
Packit Service f629e6
         return int(x)       # -2.3 --> -2
Packit Service f629e6
   } else {
Packit Service f629e6
      fraction = x - ival
Packit Service f629e6
      if (fraction >= .5)
Packit Service f629e6
         return ival + 1
Packit Service f629e6
      else
Packit Service f629e6
         return ival
Packit Service f629e6
   }
Packit Service f629e6
}