Bash:如何计算



我需要做一些基本的数学(720/304) * 360

但Bash的行为很奇怪:

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

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

echo "720/304 * 360" | bc -l

或者,在 bash 中更短:

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

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

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

然后它不需要临时的非整数结果(这些结果在您的顺序中int(720/304) = 2, 2 * 360 = 720

尝试这样做:

 echo 'scale=2; 720/304 * 360' | bc

这里需要scale,就像我一样。最好使用单引号来避免可能的外壳扩展

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

bc <<< 'scale=2; 720/304 * 360'

或使用此处文档

bc<<'EOF'
scale=2; 720/304 * 360
EOF
如果你想

有一定的精度,你应该用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

kent$  awk 'BEGIN{printf "%.2fn", 720/304*360}'
852.63

相关内容

  • 没有找到相关文章

最新更新