echo -n "x1 = "
echo -e "scale=3\n0.5*(-($B)+sqrt($D))/($A)" | bc
是什么意思-n,-e和bc?
假设,
D=$(( ($B)*($B)-4*($A)*($C) ));
echo D = $D
if [ $D -gt 0 ] ; then
then
echo -n "x1 = "
echo -e "scale=3\n0.5*(-($B)+sqrt($D))/($A)" | bc
echo -n "x2 = "
echo -e "scale=3\n0.5*(-($B)-sqrt($D))/($A)" | bc
fi
所以每当我给出一些浮动类型值。它显示错误。
答案 0 :(得分:0)
如果您想进行更多研究,man
- bash
和bc
页面都可以使用这些内容。
echo
内置bash命令的选项包括-n
,它阻止在输出后输出换行符(因此表达式与文字{{1}在同一行上},而不是在下一行。)
x1 =
选项允许它为换行符解释扩展字符,例如-e
。这实际上是不必要的,因为\n
也将分号理解为分隔符,所以你可能刚刚使用过:
bc
就echo "scale=3; 0.5*(-($B)+sqrt($D))/($A)" | bc
而言,这是大多数类UNIX操作系统所包含的任意精度计算器。上面的命令被视为您已启动bc
并实际输入文本bc
,其中包含scale=3; 0.5*(-($B)+sqrt($D))/($A)
,B
和{ {1}}变量替换为实际值。
D
程序将解释该输出结果。
关于您使用浮点值获得的错误,因为该行:
A
由bc
解释,与D=$(( ($B)*($B)-4*($A)*($C) ))
不同,它不会使用浮点值进行计算 - 它只是严格整数。
要解决此问题,只需将二次解决方案的完整计算移动到bash
,例如:
bc