round.awk 661 B

1234567891011121314151617181920212223242526272829
  1. # round.awk --- do normal rounding
  2. #
  3. # Arnold Robbins, arnold@skeeve.com, Public Domain
  4. # August, 1996
  5. function round(x, ival, aval, fraction)
  6. {
  7. ival = int(x) # integer part, int() truncates
  8. # see if fractional part
  9. if (ival == x) # no fraction
  10. return ival # ensure no decimals
  11. if (x < 0) {
  12. aval = -x # absolute value
  13. ival = int(aval)
  14. fraction = aval - ival
  15. if (fraction >= .5)
  16. return int(x) - 1 # -2.5 --> -3
  17. else
  18. return int(x) # -2.3 --> -2
  19. } else {
  20. fraction = x - ival
  21. if (fraction >= .5)
  22. return ival + 1
  23. else
  24. return ival
  25. }
  26. }