如何比较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
提交
取消