Macで電卓を使いたい時はターミナルからbcを使おう

スポンサーリンク

目次


bcとは

UNIX系で計算を行うときに使う計算言語です。
四則演算・対数関数・指数関数はもちろんのこと、変数を定義することで複雑な計算も可能です。

 NAME
       bc - An arbitrary precision calculator language

"An arbitrary precision calculator language"を和訳すると「任意精度計算言語」です。


Macのターミナルでbcと打ってEnterを押すと、ターミナル上でbcを使うことができます。

$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

bcは特に指定がなければ対話型モードで実行されます。
例えば、

1+2

と入力してEnterを押すと

3

と結果が返ってきます。
↓↓実際の使用例↓↓ f:id:tkhstol-929:20180817205612p:plain

scale=5とすることで小数を5桁まで表示するように設定しています。(デフォルトではscale=0

オプション

bcは起動時にオプションを付けることができます。以下はman bcでオプションを確認した結果です。

OPTIONS
       -h, --help
              Print the usage and exit.

       -i, --interactive
              Force interactive mode.

       -l, --mathlib
              Define the standard math library.

       -w, --warn
              Give warnings for extensions to POSIX bc.

       -s, --standard
              Process exactly the POSIX bc language.

       -q, --quiet
              Do not print the normal GNU bc welcome.

       -v, --version
              Print the version number and copyright and quit.

英語を全部訳すのは面倒なのでよく使うやつだけ見てみましょう。

-q, --quiet

実行時に最初に出てくるバージョン情報やcopyrightを非表示にしてくれます。bc="bc -q"みたいなエイリアスを登録してもいいぐらいマストなオプションだと思います。

-l, --mathlib

bc -lで実行すると、三角関数(sin,cos,arctan)、自然対数(log)、指数関数(exp())が使えるようになります。
-lをつけた場合、scaleが自動で20に設定されます。(=小数を20桁表示する) f:id:tkhstol-929:20180818114334p:plain

基数計算

ibase, obaseというパラメータをいじると任意の基数での入力・出力が可能になります。
例えば、ibase=10, obase=16とすると、10進数で入力した計算式を16進数で結果出力します。 (デフォルトではどちらも10なので10進数で表示される)

ibase=10
obase=16
10+5
F

応用:非対話モードで実行

以下のようにリダイレクション<<を使って非対話モードでbcを実行することができます。

$ bc <<EOF
> scale=3
> 4/3
> EOF
1.333

上記では、EOFが入力されるまで式の入力を受け付けます。
あるいは、パイプ記号|を使って以下のように書き換えることもできる。

$ echo "scale=3; 4/3;" | bc
1.333

円周率を任意の桁まで求める

$ bc -lq
scale = 10;
(12*a(1/49)+32*a(1/57)-5*a(1/239)+12*a(1/110443))*4
3.1415926420

a()はtanの逆関数arctanのことです。
scaleで指定した桁数分の円周率を表示します。

参考

bc

bc (UNIX) - Wikipedia

【 複雑な計算を行う「bc」 】 | 日経 xTECH(クロステック)

にほんブログ村 IT技術ブログへ
にほんブログ村

にほんブログ村 IT技術ブログへ
にほんブログ村