Linux裡隱藏的計算器,你知道它的奧祕嗎?
阿新 • • 發佈:2020-09-19
## Linux裡隱藏的計算器,你知道它的奧祕嗎?
大家都知道,windows下有個計算器工具,我們在工作生活中經常使用到它。但是,你可知Linux下也同樣有個計算器嗎?
當然,良許說的是命令列下的計算器工具,而不是介面型的計算器。良許是Linux應用開發工程師,平時基本是在命令列下工作,所以對於介面類的操作良許也不是非常擅長。
**啟動計算器**
啟動這個命令列計算器很簡單,只需在終端下輸入bc即可。bc是英語basic calculator的縮寫。退出計算器也很簡單,只需輸入quit即可。
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203546850-1498065360.jpg)
**選項**
當然,這個計算器也是可以帶選項的,常用的選項如下:
-i:強制進入互動式模式;
-l:定義使用的標準數學庫;
-w:對POSIX bc的擴充套件給出警告資訊;
-q:不列印正常的GNU bc環境資訊;
-v:顯示指令版本資訊;
-h:顯示指令的幫助資訊。
**基本運算**
啟動計算器之後,就可以在裡面進行計算了。基本的運算如下:
\+ 加法
\- 減法
\* 乘法
\/ 除法
^ 指數
% 餘數
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203548745-695933242.jpg)
當然,如果只支援這些運算的話,那也太小兒科了,它的強大之處還在後頭。
**表示式運算**
如果要計算一個表達示,直接在bc裡輸入表示式即可。bc會將變數儲存,其它表示式也可以直接使用這個變數。
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203550663-714346031.jpg)
**進位制切換**
作為一個程式設計師,我們經常與二進位制,十進位制,十六進位制進行打交道,bc當然也支援這些操作。輸入和輸出的數系基分別儲存在ibase和obase變數中,預設值為10,有效的數值是2到16。也就是說,我們除了常規的2、8、10、16進位制,還可以使用3、5、7、9等進位制。
但是,在進行設定的時候,一定要先設定obase,再設定ibase。因為如果先設定ibase的話,再設定obase時,obase等號後面的數字就會被認為是ibase設定的進位制值。
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203552947-1208364956.jpg)
**精度調整**
bc預設的精度是0,也就是說,bc是預設以整數的方式進行儲存。我們可以通過設定scale這個變數來進行調整精度。
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203555013-154802372.jpg)
**使用內建函式**
除了簡單的算術操作符,bc還通過外部的數學函式庫來提供許多高階的數學函式。此時,應該使用-l選項。常用的函式如下:
N的二次方根 sqrt(N)
X的正弦(X是弧度) s(X)
X的餘弦(X是弧度) c(X)
X的反正弦(返回值是弧度) a(X)
X的自然對數: l(X)
X的指數對數: e(X)
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203556420-1540803041.jpg)
**程式設計運算**
作為一個計算語言,bc支援簡單的宣告(變數賦值、中斷、返回等)、複合語句(if、while、for loop等)和自定義函式。這個功能就比較高階,更詳細的內容可以參考官方指南。
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203557556-443921172.jpg)
**通過管道操作**
直接上例子:
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203558881-581083771.jpg)
也能夠使用HERE 命令:
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203559959-1599156034.jpg)
能夠使用內建的變數 last 引用上一次的結果:
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203600810-1949824205.jpg)
last 也能夠用 點號取代:
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203602869-996028055.jpg)
**非互動介面下使用bc**
到目前為止,我們一直在互動介面下使用bc。不過更加流行的使用bc的方法是在沒有互動介面的指令碼中執行bc。這種情況下,你可以使用echo命令並且藉助管道來向bc傳送輸入內容。
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203604000-212348823.jpg)
執行結果:
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203604876-472198287.jpg)
**一個簡單的計算三角形面積的程式**
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203606063-371768303.jpg)
進行結果:
![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200918203606975-504040390.jpg)
**結語**
bc這個命令列計算器非常強大,至少比window自帶的計算器要強大很多。這個工具特別適合linux開發人員,在無需開啟手機計算器的情況下,很方便的就可以進行數學運算。同時,也可以編寫指令碼進行更復雜的數學運算。更強大的功能還有待你的發現!
更多精彩內容,請關注公眾號**良許Linux**,公眾內回覆**1024**可免費獲得5T技術資料,包括:**Linux,C/C++,Python,樹莓派,嵌入式,Java,人工智慧**,等等。公眾號內回覆**進群**,邀請您進高手如雲技術交流群。
![img](http://pbe9kvqil.bkt.clouddn.com/FmsDX2j5rcQ7DjY8p-KYTN7m5uNu)
---
公眾號:良許Linux
### 有收穫?希望老鐵們來個三連擊,給更多的人看到這