コマンドラインで数値演算する方法

こんにちは、さるまりんです。

macで作業をしていて、計算したい!って時に、計算機アプリを起動するのがめんどう、横に電卓置いておくのもなんだかなあって思いまして。

コマンドラインで計算してみました。

expr

まずはexprコマンドです。

シンプルな数式はそのまま受け付けてくれます。

足し算と引き算です。

$ expr 12 + 34
46
$ expr 23 - 9
14

掛け算は注意が必要です。

$ expr 15 * 2 + 3
expr: syntax error

エラーになりました。

$ expr 15 \* 2 + 3
33

\*で「×」です。

割り算です。

$ expr 24 / 3
8

剰余演算子であまりも計算できます。

$ expr 30 % 7
2

でも、exprは整数のみなんです。小数点以下を含む数値の計算をするときはどうしましょう?

bc

bcコマンドなら小数点以下を含む数の計算もできます。

$ echo "16.7 + 48.1" | bc
64.8

こんな渡し方もできます。

$ bc <<< "16.7 + 48.1"
64.8

平方根なんかも計算できます。
√2です。

$ echo "sqrt(2)" | bc
1

あれ、整数で答えが出てしまいました。

-lオプションを使うと

$ echo "sqrt(2)" | bc -l
1.41421356237309504880

小数点第20位まで表示されています。

scaleで桁数を設定して

$ echo "scale=3;sqrt(2)" | bc -l
1.414

小数点第3位までの表示になりました。

他にもいろんなことができそうです。マニュアルはこちらです。

その先頭に
an arbitrary precision calculator language
(任意制度の計算言語)
とあるので、計算機の言語なんですね。

bash

bashでそのまま計算することもできます。

$ ((e=11))
$ ((e=e*3))
$ echo $e
33

++--も使えます。

$ ((e++))
$ echo $e
34

プログラミング言語実行環境

PHPがインストールされていれば、-rオプションを付けると、コマンドラインからちょっとしたPHPを書いて実行することができます。それを使って数式の結果を表示してみます。

$ php -r "echo 16.7 + 48.1;"
64.8

√256です。

$ php -r "echo sqrt(256);"
16

perlなど他の言語でもコマンドラインからの実行が許可されていれば

perlだと-eオプションです。

$ perl -e "print 16.7 + 48.1"
64.8

macでなくても、Linuxや他のUnix環境でもコマンドがあればできると思います。

簡単な暗算ができないのもちょっとですが、コンピューター=計算機を触っているのだから、それに任せたいって思ってもいいですよね。

単純な足し算をよくするのでexprを使う頻度をキープしそうです。(暗算は?)

読んでくださってありがとうございました。

それではまた!