浮動小数点数の比較で間違った出力

浮動小数点数の比較で間違った出力

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が、代わりに0for the first と1for 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

関連情報