home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / gnuawk.zip / awklib / eg / lib / round.awk < prev   
Text File  |  1997-03-15  |  675b  |  33 lines

  1. # round --- do normal rounding
  2. #
  3. # Arnold Robbins, arnold@gnu.ai.mit.edu, August, 1996
  4. # Public Domain
  5.  
  6. function round(x,   ival, aval, fraction)
  7. {
  8.    ival = int(x)    # integer part, int() truncates
  9.  
  10.    # see if fractional part
  11.    if (ival == x)   # no fraction
  12.       return x
  13.  
  14.    if (x < 0) {
  15.       aval = -x     # absolute value
  16.       ival = int(aval)
  17.       fraction = aval - ival
  18.       if (fraction >= .5)
  19.          return int(x) - 1   # -2.5 --> -3
  20.       else
  21.          return int(x)       # -2.3 --> -2
  22.    } else {
  23.       fraction = x - ival
  24.       if (fraction >= .5)
  25.          return ival + 1
  26.       else
  27.          return ival
  28.    }
  29. }
  30.  
  31. # test harness
  32. { print $0, round($0) }
  33.