33 lines
668 B
Awk
33 lines
668 B
Awk
# round --- do normal rounding
|
|
#
|
|
# Arnold Robbins, arnold@gnu.org, August, 1996
|
|
# Public Domain
|
|
|
|
function round(x, ival, aval, fraction)
|
|
{
|
|
ival = int(x) # integer part, int() truncates
|
|
|
|
# see if fractional part
|
|
if (ival == x) # no fraction
|
|
return x
|
|
|
|
if (x < 0) {
|
|
aval = -x # absolute value
|
|
ival = int(aval)
|
|
fraction = aval - ival
|
|
if (fraction >= .5)
|
|
return int(x) - 1 # -2.5 --> -3
|
|
else
|
|
return int(x) # -2.3 --> -2
|
|
} else {
|
|
fraction = x - ival
|
|
if (fraction >= .5)
|
|
return ival + 1
|
|
else
|
|
return ival
|
|
}
|
|
}
|
|
|
|
# test harness
|
|
{ print $0, round($0) }
|