來自GNU的高精度計算機bc

來源:互聯網
上載者:User

bc是一個源自GNU的高精度計算程式,除了進行簡單的數值計算,更可以用它特有的語言去寫一個計算程式,來執行複雜的計算,比如複雜的級數求和。大多數Linux發行版中都內建了bc,Windows的使用者可以在GnuWin32項目中找到。

在命令列下執行bc,你就進入了bc的解譯器,要退出,可以輸入halt或者是quit,這兩者有些細小的差別,過後再說。

bc下可以進行簡單的計算。你可以輸入34*23,3^4等等,其中“^”代表乘方。既然bc是個高精度的計算機,你當然可以輸入34^99這樣的運算式,bc會把結果一字不差地告訴你。等等,如果你輸入的是3/5,你會發現bc計算的結果是0,難道是出錯了?

這要說到bc的一個特性。在預設的情況下,bc計算結果的小數位元是零。也就是說,如果計算結果是小數,bc會把小數部分捨去。你當然可以改變這個特性,方法是輸入:
scale=10
然後你再讓bc計算3/5,你會發現結果變成了
.6000000000
保留了10位小數。

scale是bc中的一個特殊的變數,預設情況下,scale=0,因此是忽略小數位的。你可以把scale設定成任意的正整數,只要它不超過2147483647就行。

在bc中還可以使用變數。bc中的變數名以一個小寫字母開頭,後面可以跟數字或小寫字母、底線,但不能含有大寫字母。例如執行下面的語句:
a=3
b=2
c=5
a*(b+c)
bc會把結果21顯示出來。

下面再試試這個:
obase=2
接著再執行一些計算,比如:3+9。bc居然顯示出了1100!怎麼回事?
如果你熟悉二制,你會發現二進位的1100等於二進位裡的12。沒錯,obase也是bc中的一個特殊變數,它可以設定計算結果以那一種進位顯示。obase的取值範圍是2~16。通過給obase設定不同的值,我們輕而易舉地可以把十進位數轉換成任意進位的數。

你也許還不滿足,能不能在輸入的不使用十進位呢?可以的,你應該設定ibase這個變數。例如:
ibase=2
obase=2
1101+10011
bc顯示的結果就成了100000。這樣,通過改變ibase和obase的值,你就可以進行任意進位的計算。

bc還支援一種語言,這種語言和C語言類似,因此使用起來很容易。請在一個檔案中寫下如下的代碼:
define is_prime(n){
 auto prime,i;
 prime=1;
 for (i=2;i^2<=n;++i){
  if (n%i==0){
   prime=0;
   break;
  }
 }
 return prime;
}
print "/nPlease enter a positive integer n:/n";
n=read();
print "/n/n"
for (i=2;i<=n;++i){
 if (is_prime(i)){
  print i;
  print "/n";
 }
}
quit;
假設你將其儲存為t.b,那麼就可以在命令列中運行:
bc -q t.b
然後按提示輸入一個正整數,你就會得到一串的質數。其中參數-q的意思是bc啟動時不顯示著作權資訊。

代碼的第一行定義了一個函數名,這個函數有一個參數n。下面的auto prime,i定義了兩個局部變數。後面一句n=read()作用是從鍵盤讀入一個整數。其餘的和C語言極其類似,就不解釋了。

總結:bc作為高精度計算程式,足夠簡單,也足夠強大。缺點是對於沒有學過程式語言的人來說,難於使用。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.