これに基づいて、シェルスクリプトで浮動小数点値を比較しています。引用する。以下はスクリプトの内容です
num1=50.960
num2=6.65E+07
echo "${num1} < ${num2}" | bc
スクリプトを実行すると、出力は「0」です。しかし、比較によると「1」でなければなりません。比較が期待どおりに機能しない理由を理解する必要がありますか?
ベストアンサー1
ユーティリティは目的の番号をbc
認識しません。6.65E+07
OpenBSDではE
16進数なので6.65E
6.664(6.65 + 0.014)で、+07
7を足すと13.664になりますが、これは明らかに50.960より小さいです。 GNUシステムでも、6.65E
これは6.659
あなたが望むものではありません。
代わりにnum2
文字列6.65*10^7
または66500000
。
$ num1=50.960; num2='6.65*10^7'; printf '%s < %s\n' "$num1" "$num2" | bc
1