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 |
}
|