bash 不能處理浮點運算, 並且缺乏特定的一些操作,這些操作都是一些重要的計算功能.幸運的是,bc
可以解決這個問題.
bc不僅僅是個多功能靈活的精確的工具, 而且它還提供許多程式語言才具備的一些方便的功能.
因為它是乙個完整的 unix 工具, 所以它可以用在管道
中,bc在指令碼中也是很常用的.
這裡有乙個簡單的使用 bc 命令的模版可以用來在計算指令碼中的變數. 用在命令替換 中.
variable=$(echo "options; operations" | bc)
如:interest_rate=$(echo "scale=9; $interest_r/12 + 1.0" | bc)
以前一直以為bc做了不了浮點運算,雖然他能結算類似
13.4*45.6
的乘法,但是在計算除法的時候,無論你輸入
5/3還是
5/3.0
得到的結果都是
1我也沒有去看man手冊,今天無意中發現了ibase這個變數,是bc使用的乙個變數,表示輸入的數字的進製,比如ibase=8,表示你輸入的數是8進製的。
這讓我很好奇,於是去看了man手冊,原來他是可以做浮點除法的,只是預設不輸出小數點後面的值,它同樣採用了乙個變數來控制--scale,其值表示輸出多少位小數。另外乙個和ibase對應的變數是obase,表示結果輸出採用什麼進製,預設是10進製。
給出幾個例子,大家一看就明白了。
[root@lancy bin]# echo "2.5*3.4" |bc
8.5[root@lancy bin]# echo "5/3; 5/3.1" |bc11
[root@lancy bin]# echo "scale=2; 5/3" |bc
1.66
[root@lancy bin]# echo "ibase=10;obase=2; 4*6"|bc
11000
[root@lancy bin]# echo "ibase=2; 110*101; obase=10" |bc
30[root@lancy bin]# echo "ibase=2; 11110; obase=2" |bc
30
shell中的浮點數運算之bc命令簡介
在shell中,當我們進行浮點數的運算,特別是用於浮點數間的比較大小時,往往會出現一些問題,這裡使用bc命令,幫你解決困難 它的一般格式 var echo option1 option2 expression bc 其中options部分一般設定精度scale,和變數賦值,expression部分是...
Shell指令碼浮點運算
本文將介紹幾種linux下通過shell指令碼進行浮點數計算的方法。bash shell本身不具備處理浮點計算的能力,如expr命令只支援整數運算 bin bash a 59 b 60 expr a b 執行結果 cal.sh 0 使用bc進行處理。bin bash a 59 b 60 echo s...
Shell浮點數運算
shell本身不支援浮點數運算,之類的數 算符只能進行整數運算。要想在shell中運算浮點數,只能借助於bc,awk或者perl。如 a 0.1 b 0.2 c echo a b bc l 或者perl e print stdout a b 需要注意的是,如果數學表示式中有負數,則必須確保運算子 與...