30 lines
661 B
Awk
30 lines
661 B
Awk
# round.awk --- do normal rounding
|
|
#
|
|
# Arnold Robbins, arnold@skeeve.com, Public Domain
|
|
# August, 1996
|
|
|
|
function round(x, ival, aval, fraction)
|
|
{
|
|
ival = int(x) # integer part, int() truncates
|
|
|
|
# see if fractional part
|
|
if (ival == x) # no fraction
|
|
return ival # ensure no decimals
|
|
|
|
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
|
|
}
|
|
}
|