Linux 巴什:如何计算?

Linux 巴什:如何计算?,linux,bash,math,Linux,Bash,Math,我需要做一些基础数学720/304*360 但是bash的行为非常奇怪: echo "720/304 * 360" | bc 720 echo "(720/304) * 360" | bc 720 echo $(((720/304) * 360)) 720 尝试这样做: echo 'scale=2; 720/304 * 360' | bc 这里需要天平,就像我一样。最好使用单引号,以避免可能的外壳扩展 使用,您也可以在此处执行此操作字符串: 或使用此处文档: 如果可以使用整数结果,则可

我需要做一些基础数学720/304*360

但是bash的行为非常奇怪:

echo "720/304 * 360" | bc
720

echo "(720/304) * 360" | bc
720

echo $(((720/304) * 360))
720
尝试这样做:

 echo 'scale=2; 720/304 * 360' | bc
这里需要天平,就像我一样。最好使用单引号,以避免可能的外壳扩展

使用,您也可以在此处执行此操作字符串:

或使用此处文档:


如果可以使用整数结果,则可以反转/和*:

echo $((720*360/304))
852

然后,它不需要临时的非整数结果,这些结果的顺序是int720/304=2,2*360=720

如果您想获得一定的精度,您应该使用awk或bc进行数学计算。但要小心使用bc的舍入。因为某些操作会产生意外的结果:例如:

kent$  echo 'scale=2; 720/304 * 360' |bc 
849.60
kent$  echo 'scale=3; 720/304 * 360' |bc         
852.480
kent$  echo 'scale=4; 720/304 * 360' |bc 
852.6240
因此,我推荐awk:

使用bc-l获取每个操作的非整数结果

echo "720/304 * 360" | bc -l
或者,在bash中缩短:

bc -l <<< '720/304*360'

bash只能做整数运算。为什么bc不能对数字进行四舍五入?回波标度=2;720/304*360'| bc>849.60
kent$  awk 'BEGIN{printf "%.2f\n", 720/304*360}'
852.63
echo "720/304 * 360" | bc -l
bc -l <<< '720/304*360'