linuxbashmathshellrounding

Round a divided number in Bash


How would I round the result from two divided numbers, e.g.

3/2

As when I do

testOne=$((3/2))

$testOne contains "1" when it should have rounded up to "2" as the answer from 3/2=1.5


Solution

  • To do rounding up in truncating arithmetic, simply add (denom-1) to the numerator.

    Example, rounding down:

    N/2
    M/5
    K/16
    

    Example, rounding up:

    (N+1)/2
    (M+4)/5
    (K+15)/16
    

    To do round-to-nearest, add (denom/2) to the numerator (halves will round up):

    (N+1)/2
    (M+2)/5
    (K+8)/16