在 if 語句中比較小數點值

在 if 語句中比較小數點值

今天我試著比較兩個值,並對我所看到的結果感到驚訝。我在任何地方都沒有找到任何好的建議。有人可以幫忙嗎?

if [ 10.94 -gt 10 ]
then
  echo True
else
  echo False
fi

我很驚訝這裡的結果是假的。

然後我嘗試了以下方法。

if [[ 10.94 > 10 ]]

結果為真。我對此很好。

我的腳本在特定條件下再次出現缺陷,如下所示

if [[ 5.15 > 10 ]]
  echo True
fi

這裡的結果是 True。

怎麼會?有沒有更好的想法,可以用正確的方式比較十進制值?

答案1

echo | awk '{if (10.1 > 10.0) {print "True"} else {print "False"} }' 
True

if [ $(echo "10.12 < 10.13"|bc -l) -eq 1 ];then echo "True"; else echo "False"; fi
True

相關內容