Bashの10進数の比較

Bashの10進数の比較

今朝私の検索は、bashで2つの10進数を比較する方法に関するもので、次の答えを得ました。シェルスクリプトで浮動小数点数と比較する方法。ただし、これには含まれません。この回答はここにあります:

$ [[ ((3.56 < 2.90)) ]]; echo $?
1
$ [[ ((3.56 < 4.90)) ]]; echo $?
0

この答えが反対の表を受け取り、やや異常に屈辱的なように見えることを考えると、この算術評価の正確さを信頼できますか?

ベストアンサー1

bash浮動小数点数を理解していません。マニュアルページ、セクション
引用bash算術評価:

評価は固定幅整数[...]で行われます。

したがって、((3 < 4))orは((3 < 2))実際に正しい算術表現です。次のように入力できます。

$ echo "$((3 < 4)) -- $((3 < 2))"

出力:1 -- 0

ただし、$ echo $((3.3 < 3.6))構文エラーメッセージが返されます。あなたの例では実際に文字列を比較しています。以下はいくつかの例です。

$ [[ ((3.56 < 04.90)) ]]; echo $?

出力:1

おすすめ記事