I am a new bash
learner. I want to print the result of an expression given as input having 3 digits
after decimal point with rounding if needed.
I can use the following code, but it does not round. Say if I give 5+50*3/20 + (19*2)/7
as input for the following code, the given output is 17.928
. Actual result is 17.92857...
. So, it is truncating instead of rounding. I want to round it, that means the output should be 17.929
. My code:
read a
echo "scale = 3; $a" | bc -l
Equivalent C++
code can be(in main
function):
float a = 5+50*3.0/20.0 + (19*2.0)/7.0;
cout<<setprecision(3)<<fixed<<a<<endl;
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
?