外部コマンドを使用せずにbashで浮動小数点演算を実行できますか? [コピー]

外部コマンドを使用せずにbashで浮動小数点演算を実行できますか? [コピー]

bash外部コマンドを使用せずに整数演算を実行できることを読みました。たとえば、次のようになります。

echo "$((3 * (2 + 1)))"

外部コマンドを使用せずに浮動小数点演算を実行できますかbash

ベストアンサー1

いいえ。

Bash自体は浮動小数点演算を実行できません。


これはあなたが探しているものではありませんが、他の人には役立ちます。

代替

  1. bc

bc浮動小数点演算が許可され、整数でも値を設定して浮動小数点に変換できますscale。 (このscale値は内部除算にのみ影響しますbcが、回避策はすべての式を1で除算して終了することです。)

$ echo '10.1 / 1.1' | bc -l
9.18181818181818181818
$ echo '55 * 0.111111' | bc -l
6.111105
$ echo 'scale=4; 1 + 1' | bc -l
2
$ echo 'scale=4; 1 + 1 / 1' | bc -l
2.0000

  1. awk

awkこれはそれ自体のプログラミング言語ですが、簡単に活用してbashスクリプトで浮動小数点操作を実行できますが、これができるすべてではありません!

echo | awk '{print 10.1 / 1.1}'
9.18182
$ awk 'BEGIN{print 55 * 0.111111}'
6.11111
$ echo | awk '{print log(100)}'
4.60517
$ awk 'BEGIN{print sqrt(100)}'
10

私はechoPiped toawkとaを使ってBEGINこれを行う2つの方法を示しています。入力を読み取る前にすべてのステートメントがawk BEGIN実行されますが、入力がない場合はBEGINステートメントはawk実行されないため、その入力を提供する必要があります。


  1. Perl

Bash スクリプトで使用できる別のプログラミング言語です。

$ perl -l -e 'print 10.1 / 1.1'
9.18181818181818
$ somevar="$(perl -e 'print 55 * 0.111111')"; echo "$somevar"
6.111105

  1. Python

Bash スクリプトで使用できる別のプログラミング言語です。

$ python -c 'print 10.1 / 1.1'
9.18181818182
$ somevar="$(python -c 'print 55 * 0.111111')"; echo "$somevar"
6.111105

  1. Ruby

Bash スクリプトで使用できる別のプログラミング言語です。

$ ruby -l -e 'print 10.1 / 1.1'
9.18181818181818
$ somevar="$(ruby -e 'print 55 * 0.111111')"; echo "$somevar"
6.111105

おすすめ記事