bashで2つの浮動小数点数を比較しようとしていますが、何かがうまくいきません。解決策に基づいたコードサンプルを以下に示します。ここ
num1=0.502E-01
num2=0.01
echo $num1'>'$num2 | bc -l
echo $num2'>'$num1 | bc -l
1
私はfor first echo とfor second echoの出力を期待しています0
が、代わりに0
for the first と1
for second が返されます。この入力の何が間違っているのでしょうか? これらの浮動小数点数の一貫した比較を取得するにはどうすればよいですか?
答え1
awk
シェル スクリプトから呼び出された場合は、浮動小数点の比較を確実に実行できます。
num1=0.502E-01
num2=0.01
awk -v a="$num1" -v b="$num2" 'BEGIN{print(a>b)}'
1
awk -v a="$num1" -v b="$num2" 'BEGIN{print(b>a)}'
0