Bash 在执行计算时只给出整数作为输出,而不管输入是什么

Bash 在执行计算时只给出整数作为输出,而不管输入是什么

当我输入以下命令时:

result=$(( ($1-32)*(5/9) ))
echo $result

变量 result 的计算结果始终为整数,无论​​方程式的计算结果是否为小数。这是为什么?

答案1

shellbash本身仅支持整数运算。具体来说,由于 5 小于 9,因此(5/9)无论乘积中的其他项如何,其结果都为零。

根据您的要求,您可以通过改变运算顺序来做您想做的事情(仍然使用整数运算),即

$ bash -c 'echo $(( ($1-32)*(5/9) ))' bash 35
0

如果你允许*/有其自然优先权

$ bash -c 'echo $(( ($1-32)*5/9 ))' bash 35
1

因为(35-32)*515,将其整数除以得到91如果你真的想要浮点运算,那么你可以使用外部程序,例如bcawk例如

$ bash -c 'echo "scale = 2; ($1-32)*(5/9)" | bc' bash 35
1.65

或者切换到支持浮点运算的 shell,例如ksh

$ ksh -c 'echo $(( ($1-32)*5/9 ))' ksh 35.0
1.66666666666666667

(注意使用参数35.0来强制浮点提升)。

相关内容