今朝私の検索は、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