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中的浮點數比較


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM