为什么我不能在 shell 中使用小数执行 let?什么是 BC?

为什么我不能在 shell 中使用小数执行 let?什么是 BC?

我正在尝试在 Ubuntu virtualbox 中使用 shell 文本执行此操作:

#!/bin/bash

n1=3.5
n2=3.6
n3=3.7
n=3
let promedio=n1+n2+n3/3
echo $promedio

是关于学生平均成绩的。但终端显示错误:

line 7: let: 3.5: syntax error: invalid arithmetic operator (error token is ".5")

为什么?我无法用数字进行 + 运算。我该怎么办?

我正在阅读有关 BC 命令的内容,但我不知道它去了哪里。

编辑:我尝试在末尾添加 | BC,但出现同样的错误。我还尝试查看有关此问题的帖子,但他们使用了一些不同的东西,我真的不明白,因为我对 Ubuntu 真的很陌生。他们使用$echo或类似的东西,但我使用的代码不同。

答案1

Bash 中没有浮点算术运算。因此,您可以使用 BC 来计算它:

#!/bin/bash

n1=3.5
n2=3.6
n3=3.7
promedio=`echo $n1 + $n2+ $n3/3 | bc`
echo $promedio   # 3.5 + 3.6 + 1 = 8.1 **This might be not what you want**

BC 是一个简单的命令行计算器。

顺便说一句,echo <expression> | bc命令会将使用 BC 获得的表达式的计算发送到 bash。

稍微解释一下:

  • 因此,通过封装两个`,您说的是 promedio 值是通过命令获得的结果。(换句话说,它被称为命令替换,请参阅这里了解更多信息)

  • 通过使用,echo您说结果将是通过 BC 获得的某些计算的输出。

  • 而且这些命令在逻辑上存在缺陷,如果bc这样使用,它会以整数来划分,(3.7/3 = 1),所以你应该使用bc -l命令来精确计算(3.7/3 = 1.2333...)。

要除这三个数字的总和,你应该正确地使用括号:

#!/bin/bash

n1=3.5
n2=3.6
n3=3.7
promedio=`echo "($n1 + $n2+ $n3)/3" | bc -l`
echo $promedio     # (3.5 + 3.6 + 3.7)/3 = 3.60000...

相关内容