shell中的浮点数运算以及比较大小

浮点数运算

法一: 

#!/bash
 for((i=1;i<=10;i++))
 do
   echo $i

   j=$(echo "$i*0.2-2.5"|bc)

  echo $j
done

法二:

#!/bash
 for((i=1;i<=10;i++))
 do
   echo $i

   j=`bc <<< "0.2*(${i}-1)-2.5"`

  echo $j
done

shell 包含三个命令:bc、expr、let可用于数值计算。

输入:整数,let和expr都无法进行浮点运算,但是bc和awk可以。

输出:bc、expr可直接显示计算结果;let则丢弃计算结果,可通过传递结果到变量,取变量值获得计算结果。

法三:

$ echo "scale=3; 1/13"  | bc
    .076
   $ echo "1 13" | awk '{printf("%0.3f\n",$1/$2)}'
    0.077

scale用来控制小数点后面保留的位数,默认为0

由于实际使用时发现bc命令会把整数位的0给删去,例如:

输入:echo "0.001 + 0.002"|bc
输入:.003

所以我自己选择了awk的方法

浮点数比较

#!/bin/bash
a=7.2
b=8
if [ `echo "$a < $b"|bc` -eq 1 ] ; then
echo  "$a < $b "
else
echo "$a > $b "
fi

 

参考资料:

shell中的浮点数运算

shell中的浮点数比较

posted @ 2020-08-13 22:07  Boblim  阅读(10107)  评论(0编辑  收藏  举报