bashの浮動小数点数

bashの浮動小数点数

変数があり、ここに1000を掛けて5つの有効数字を印刷したいとします。zsh次のことができます。

zsh$ x=2.8026407e+00
zsh$ printf "%.5g\n" "$(( 1000*${x} ))"
zsh> 2802.6

それもできますかbash

bash$ x=2.8026407e+00
bash$ printf "%.5g\n" "$(( 1000*${x} ))"
bash> bash: 1000*2.8026407e+00 : syntax error: invalid arithmetic operator (error token is ".8026407e+00 ")

ネイティブbashに浮動小数点演算を理解させる方法はないと思います。そうですか? egを使用できることを知っていますが、これが可能かどうかをawk知りたいです。bash

bash(フロートを処理できないというのは驚きではありませんが、zsh処理されます!)

ベストアンサー1

bash浮動小数点演算の代わりに小数点がゼロに固定される固定小数点演算(つまり整数演算)を実行します。これはあなたを意味しますできるこれに対して非常に基本的な計算を行います。

$ a=1;b=3
$ echo $(( (a*1000 / b ) ))
333

したがって、1/3〜3桁は0.333です。

これは悪い考えです。

コマンドラインでFP数学計算を実行する方法はいくつかあります。以下は2つの例です。

$ python -c 'print( 1.0 / 3 )'
0.333333333333
$ echo 'scale=3; 1.0/3' | bc
.333

おすすめ記事