ウェブサイト検索

Linux で GNU bc (基本計算機) を使用する方法


bc (基本電卓) は、単純な関数電卓または金融電卓に期待される機能をすべて提供するコマンド ライン ユーティリティです。これは、ステートメントの対話的な実行により任意精度の数値をサポートする言語であり、C プログラミング言語に似た構文を持っています。

この記事で説明されているように、通常は数学的スクリプト言語として、または対話型の数学的シェルとして使用できます。

システムに bc がない場合は、次のようにディストリビューションのパッケージ マネージャーを使用してインストールできます。

sudo apt install bc	#Debian/Ubuntu
sudo yum install bc	#RHEL/CentOS
sudo dnf install bc	#Fedora 22+

対話モードで bc を開くには、コマンド プロンプトでコマンド 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'. 

10 + 5
15

1000 / 5
200

(2 + 4) * 2
12

bc は任意の精度で動作しますが、実際にはデフォルトで小数点以下が 0 桁になることに注意してください。たとえば、式 3/5 の結果は 0 になります。次の出力に示すようにです。

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'. 

3 / 5
0

-l フラグを使用すると、デフォルトのスケール (小数点以下の桁数) を 20 に設定し、標準の数学ライブラリも定義できます。ここで、前の式をもう一度実行します。

bc -l
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'. 

3 / 5
.60000000000000000000

5 / 7
.71428571428571428571

または、図のように 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'. 

scale=0; 8%5
3

scale=1; 8%5
0

scale=20; 8%5
0

scale=20; 8%11
.00000000000000000008

bash、ksh、csh などの一般的なシェルに対して次のコマンドを使用して、示されているように引数を bc に渡すこともできます。

bc -l <<< "2*6/5"

2.40000000000000000000

bc を非対話的に使用する方法を見てみましょう。これはシェル スクリプトの目的にも役立ちます。

echo '4/2' | bc
echo 'scale=3; 5/4' | bc
ans=$(echo "scale=3; 4 * 5/2;" | bc)
echo $ans

POSIX bc 言語を正確に処理するには、-s フラグを使用し、POSIX bc への拡張機能の警告を有効にするには、-w オプションを使用します。示されています。

bc -s
bc -w

詳細については、bc のマニュアル ページを参照してください。

man bc

それは今のところすべてです! bc (基本電卓) は、単純な関数電卓または金融電卓に期待される機能をすべて提供するコマンド ライン ユーティリティです。ご質問がある場合は、以下のコメントセクションからお問い合わせください。