shell中的浮點數運算以及比較大小
阿新 • • 發佈:2020-08-13
浮點數運算
法一:
#!/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
參考資料: