変数があり、ここに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