我试图在Bash中进行浮点数算术运算,但是由于不支持浮点数,因此尝试使用AWK来解决问题。以下是我面临的问题:
我发现以下代码对我有效:
代码
echo - | awk '{printf("%04.4f \n", (-225.2*7+30*6)/17 + (19^2)/9) }'
输出
-42.0301
但我的目的是"读取表达式"并计算值,精确到小数点后4位,因此尝试了下面的代码输入相同的表达式(-225.2*7+30*6)/17 + (19^2)/9),它给出了不正确的值(我猜变量被传递为字符串到awk):
代码
read inpt
echo - | awk -v input=$inpt '{printf("%04.4f \n", input) }'
输出
0.0000
注意:请忽略此示例表达式中第二个 + 符号周围的空格,可以使用 sed 或类似方法来删除它(如果带有空格,则在从 bash 传递变量时,awk 将出现语法错误)。
非常感谢任何帮助。提前致谢。
PS:我的 bash 版本是“bash-4.2”。我想这就是阻止我使用许多其他选项的 bash 版本。
bc
的访问权限可能只需要执行sudo apt install -y bc
或者相应平台的等效操作即可。 - tripleee