1
我試圖在Linux中實現這一銷售浮點比較
,我面臨set a=1.2345
set b=2.34
if (abs(a-b)>1.2) then
...
endif
有幾個問題:
- 浮點處理
- 比較(使用$ vs不使用它)
- 計算絕對值
我無法一次解決我的問題並處理所有問題。我搜索了很多頁面,有些解決方案對我不起作用。例如,我似乎沒有abs功能。
任何幫助將不勝感激。
我試圖在Linux中實現這一銷售浮點比較
,我面臨set a=1.2345
set b=2.34
if (abs(a-b)>1.2) then
...
endif
有幾個問題:
我無法一次解決我的問題並處理所有問題。我搜索了很多頁面,有些解決方案對我不起作用。例如,我似乎沒有abs功能。
任何幫助將不勝感激。
bash
不做浮點。標準實用程序bc
確實如此。它使用bc
來執行你問測試:
a=1.2345
b=2.34
r=$(echo "($a - $b)^2 > 1.2^2" | bc)
if [ "$r" -eq 1 ]
then
echo True
else
echo False
fi
由於bc
不具有abs
功能,上面的代碼使用平方不平等的每一側的簡單的變通。 bc
返回1
如果測試爲真或0
如果爲false。該輸出保存在變量r
中。測試r
的值是否等於1
與[ "$r" -eq 1 ]
。 if
聲明相應地作出響應。
你爲什麼認爲你應該有一個'abs'函數?你爲什麼認爲'abs(a-b)'會用這個說法來調用它?你爲什麼認爲'set a = 1.2345'設置了bash變量'$ a'?你爲什麼認爲'endif'結束了'if'語句?你爲什麼認爲bash支持浮點數?你是否正在嘗試編寫'(t)csh'代碼? – 2015-01-21 02:47:55