shell中用bc進行浮點運算

2021-05-25 07:03:41 字數 1129 閱讀 7055

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 需要注意的是,如果數學表示式中有負數,則必須確保運算子 與...