How to compare two floating-point values in shell script

12,425

You can compare floating-point numbers using expr(1):

: nr@yorkie 3724 ; expr 3.1 '<' 3.3
1
: nr@yorkie 3725 ; expr 3.1 '<' 3.09
0

You can also have bc do the comparisons as well as the calculations:

if [ "$(echo $result1 '<' $result2 | bc -l)" -eq 1 ];then ... fi

Finally, ksh93 can do arithmetic evaluation $(($result1 < $result2)) with floating-point numbers, although bash cannot.

Share:
12,425
Reem
Author by

Reem

Updated on June 04, 2022

Comments

  • Reem
    Reem almost 2 years

    I had to do a division in shell script and the best way was:

    result1=`echo "scale=3; ($var1 / $total) * 100"| bc -l`
    result2=`echo "scale=3; ($var2 / $total) * 100"| bc -l`
    

    but I want to compare the values of $result1 and $result2

    Using if test $result1 -lt $result2 or if [ $result1 -gt $result2 ] didn't work :(

    Any idea how to do that?