linux shell 中的浮点数比较
Floating point comparison in linux shell
我正努力在 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
returns 1
如果测试为真或 0
如果测试为假。此输出保存在变量 r
中。测试 r
的值是否等于 1
和 [ "$r" -eq 1 ]
。 if
语句相应地响应。
我正努力在 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
returns 1
如果测试为真或 0
如果测试为假。此输出保存在变量 r
中。测试 r
的值是否等于 1
和 [ "$r" -eq 1 ]
。 if
语句相应地响应。