如何比較Bash中的兩個浮點數?我正在努力比較bash腳本中的兩個浮點數。我必須要變量。let num1=3.17648e-22let num2=1.5現在,我只想對這兩個數字做一個簡單的比較:st=`echo "$num1 < $num2" | bc`if [ $st -eq 1]; then
echo -e "$num1 < $num2"else
echo -e "$num1 >= $num2"fi不幸的是,對于數字1的正確處理,我遇到了一些問題,因為數字1可以是“e-格式”。:(任何幫助,提示都歡迎!
3 回答

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
Bash只處理整數數學,但可以使用bc命令如下:
$ num1=3.17648E-22
$ num2=1.5
$ echo $num1'>'$num2 | bc -l
0
$ echo $num2'>'$num1 | bc -l
1
請注意,指數符號必須大寫。

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
awk
numCompare() { awk -v n1="$1" -v n2="$2" 'BEGIN {printf "%s " (n1<n2?"<":">=") " %s\n", n1, n2}'}
numCompare 5.65 3.14e-225.65 >= 3.14e-22numCompare 5.65e-23 3.14e-225.65e-23 < 3.14e-22numCompare 3.145678 3.1456793.145678 < 3.145679

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
更方便
if (( $(echo "$num1 > $num2" |bc -l) )); then …fi
解釋
bc
-l
--mathlib
(( ))
bc
E
num1=3.44E6
添加回答
舉報
0/150
提交
取消