やりたいこと
以下のような小数点を含んだ数値の四則演算を行いたい。
$ echo $((3*6*5.1)) -bash: 3*6*5.1: syntax error: invalid arithmetic operator (error token is ".1")
環境情報
- Debian GNU/Linux 9
やり方
bcコマンドをインストールすれば
# apt-get install bc ... Selecting previously unselected package bc. (Reading database ... 105706 files and directories currently installed.) Preparing to unpack .../bc_1.06.95-9+b3_amd64.deb ... Unpacking bc (1.06.95-9+b3) ... Processing triggers for man-db (2.7.6.1-2) ... Setting up bc (1.06.95-9+b3) ...
下記の形式で掛け算&割り算ができる。
# echo "2.4*3.1" | bc 7.4 # echo "7.4/2.2" | bc -l 3.36363636363636363636
以下、補足です。
補足
整数における掛け算や割り算は下記のようにシェルの機能で利用できますが
# echo $((3*6*5)) 90 # echo $((3*6/5)) 3
小数点は扱えません。
よって上記記載の通りでbcコマンドを利用して実現します。
数点注意が必要なのは小数点の扱いで、割り算にて以下のように-l
を付与しなければ結果が整数で小数点を切り捨てた結果となります。
# echo "7.4/2.2" | bc 3
また、掛け算にて値が1未満となる場合は以下のように0が表示されないです。
# echo "4*0.05" | bc .20
以上、ご参考になれば幸いです。