## Round a divided number in Bash

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

## Rounding up float point numbers bash

In case `input`

contains a number, there is no need for an external command like `bc`

. You can just use `printf`

:

`printf "%.3f\n" "$input"`

**Edit:** In case the input is a formula, you should however use `bc`

as in one of the following commands:

`printf "%.3f\n" $(bc -l <<< "$input")`

printf "%.3f\n" $(echo "$input" | bc -l)

## In bash how do I divide two variables and output the answer rounded upto 5 decimal digits?

The problem here is that you missed the `echo`

(or `printf`

or any other thing) to provide the data to `bc`

:

`$ echo "scale=5; 12/7" | bc`

1.71428

Also, as noted by cnicutar in comments, you need to use `$`

to refer to the variables. `sum`

is a string, `$sum`

is the value of the variable `sum`

.

All together, your snippet should be like:

`sum=12`

n=7

output=$(echo "scale=5;$sum/$n" | bc)

echo "$output"

This returns `1.71428`

.

Otherwise, with `"scale=5;sum/n"|bc`

you are just piping an assignment and makes `bc`

fail:

`$ "scale=5;sum/n"|bc`

bash: scale=5;sum/n: No such file or directory

You then say that you want to have the result rounded, which does not happen right now:

`$ sum=3345699`

$ n=1000000

$ echo "scale=5;($sum/$n)" | bc

3.34569

This needs a different approach, since `bc`

does not round. You can use `printf`

together with `%.Xf`

to round to `X`

decimal numbers, which does:

`$ printf "%.5f" "$(echo "scale=10;$sum/$n" | bc)"`

3.34570

See I give it a big scale, so that then `printf`

has decimals numbers enough to round properly.

## Bash, need to count variables, round to 2 and store to variable

Yes, it is working! I did it like this.

Arithmetic operations:

`pricevat=$(echo "$vat * ${array[5]}" + ${array[5]} | bc -l)`

Round to 3 places:

`pricevat=$(printf "%0.3f\n" $pricevat)`

If there is another way to do it better or together on one line, let me know please.

Thanks.

## Bash: How to do decimal number division?

`kent$ num=12.53`

kent$ echo "scale=2;$num/5"|bc

2.50

kent$ awk -v n="$num" 'BEGIN{printf "%.2f\n", n/5}'

2.51

note the `bc`

's `scale`

and `printf`

's format may give different result.

## How do I use floating-point arithmetic in bash?

You can't. bash *only* does integers; you *must* delegate to a tool such as `bc`

.

## How to round to 1 decimal in bash?

This is not so much a bash question as a `bc`

one, but `bc`

doesn’t round. The easiest approach is probably just to add .05 after the division, then set scale to 1 and divide by 1 to force truncation.

You can do that by using a variable inside `bc`

to hold the unrounded result:

`promedio=$(bc <<<"scale=2; p=$lineas/($dias*24); scale=1; (p+0.05)/1")`

Or you could do it all in one go by throwing in an extra multiplication by 10, rounding at that magnitude, and then dividing back down:

`promedio=$(bc <<<"scale=1; (10*$lineas/($dias*24)+0.5)/10")`

## Divide two variables in bash

shell parsing is useful only for integer division:

`var1=8`

var2=4

echo $((var1 / var2))

output:

2

instead your example:

`var1=3`

var2=4

echo $((var1 / var2))

ouput:

0

it's better to use bc:

`echo "scale=2 ; $var1 / $var2" | bc`

output:

.75

*scale* is the precision required

## How to round a floating point number upto 3 digits after decimal point in bash

What about

`a=`echo "5+50*3/20 + (19*2)/7" | bc -l``

a_rounded=`printf "%.3f" $a`

echo "a = $a"

echo "a_rounded = $a_rounded"

which outputs

`a = 17.92857142857142857142`

a_rounded = 17.929

?

### Related Topics

How to Escape Single Quotes in Bash/Grep

Quickly Create a Large File on a Linux System

Command Not Found When Using Sudo

How to Copy Commits from One Git Repo to Another

How to Change 'Rpath' in an Already Compiled Binary

Difference Between Using 'Sh' and 'Source'

Linux Default Behavior of Executable .Data Section Changed Between 5.4 and 5.9

How to Ensure Only One Instance of a Bash Script Is Running

How to Compile a 32-Bit Binary on a 64-Bit Linux Machine With Gcc/Cmake

How to Remove ^[, and All of the Escape Sequences in a File Using Linux Shell Scripting

Is There a Way For Non-Root Processes to Bind to "Privileged" Ports on Linux

Mount Smb/Cifs Share Within a Docker Container

How to Pass the Password to Su/Sudo/Ssh Without Overriding the Tty