如果你在一個圖形桌面環境中需要一個計算器時,你可能只需要一路進行點擊便可以找到一個計算器。例如,Fedora 工作站中就已經包含了一個名為 Calculator 的工具。它有著幾種不同的操作模式,例如,你可以進行複雜的數學運算或金融運算。但是,你知道嗎,命令列也提供了一個與之相似的名為 bc 的工具?
bc 工具可以提供你的功能可以滿足你對科學計算器、金融計算器或簡單計算器的期望。另外,假如需要的話,它還可以從命令列被腳本化。這使得當你需要做複雜的數學運算時,你可以在 shell 腳本中使用它。
因為 bc 也被用於其他的系統軟體,例如 CUPS 列印服務,所以它可能已經在你的 Fedora 系統中被安裝了。你可以使用下面這個指令來進行檢查:
dnf list installed bc
假如因為某些原因你沒有在上面命令的輸出中看到它,你可以使用下面的這個命令來安裝它:
sudo dnf install bc
使用 bc 的一種方式是進入它自己的 shell。在那裡你可以按行進行許多次計算。當你鍵入 bc 後,首先出現的是有關這個程式的警告:
$ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'.
現在你可以依照每行一個輸入運算式或指令了:
1+1
bc 會回答上面運算式的答案是:
2
在這裡你還可以執行其他的指令。你可以使用 加( )、減(-)、乘(*)、除(/)、圓括號、指數符號(^) 等等。請注意 bc 同樣也遵循所有約定俗成的運算規則,例如運算的先後順序。你可以試試看下面的範例:
(4+7)*2 4+7*2
若要退出 bc 可以透過按鍵組合 Ctrl D 來發送 「輸入結束」訊號給 bc 。
使用 bc 的另一種方式是使用 echo 指令來傳遞運算式或指令。下面這個範例就是計算器中的 “Hello, world” 例子,使用 shell 的管道函數(|) 來將 echo 的輸出傳入 bc 中:
echo '1+1' | bc
使用 shell 的管道,你可以發送不只一個運算操作,你需要使用分號來分隔不同的運算。結果將在不同的行中傳回。
echo '1+1; 2+2' | bc
在某些計算中,bc 會使用精確度的概念,即小數點後面的數字位數。預設的精度是 0。除法操作總是使用精確度的設定。所以,如果你沒有設定精度,有可能會帶來意想不到的答案:
echo '3/2' | bc echo 'scale=3; 3/2' | bc
乘法使用一個更複雜的精確度選擇機制:
echo '3*2' | bc echo '3*2.0' | bc
同時,加法和減法的相關運算則與之相似:
echo '7-4.15' | bc
bc 的另一個有用的功能是可以使用除了十進制以外的其他計數系統。例如,你可以輕鬆地做十六進位或二進位的數學運算。可以使用 ibase 和 obase 指令來分別設定輸入和輸出的進位系統。需要記住的是一旦你使用了 ibase,之後你輸入的任何數字都會被認為是在新定義的進位系統中。
要做十六進位數到十進位數的轉換或運算,你可以使用類似下面的指令。請注意大於 9 的十六進位數必須是大寫的(A-F):
echo 'ibase=16; A42F' | bc echo 'ibase=16; 5F72+C39B' | bc
若要讓結果是十六進位數,則需要設定 obase :
echo 'obase=16; ibase=16; 5F72+C39B' | bc
下面是一个小技巧。假如你在 shell 中做这些十六进制运算,怎样才能使得输入重新为十进制数呢?答案是使用 ibase 命令,但你必须设定它为在当前进制中与十进制中的 10 等价的值。例如,假如 ibase 被设定为十六进制,你需要输入:
ibase=A
一旦你执行了上面的命令,所有输入的数字都将是十进制的了,接着你便可以输入 obase=10 来重置输出的进制系统。
结论上面所提到的只是 bc 所能做到的基础。它还允许你为某些复杂的运算和程序定义函数、变量和循环结构。你可以在你的系统中将这些程序保存为文本文件以便你在需要的时候使用。你还可以在网上找到更多的资源,它们提供了更多的例子以及额外的函数库。快乐地计算吧!
以上是使用Linux命令列進行數學計算的詳細內容。更多資訊請關注PHP中文網其他相關文章!