read n
i=0
sum=0
while [ $i -lt $n ]
do
read X
sum=`expr $X + $sum `
i=`expr $i + 1 `
done
echo "scale = 3; $sum/$n" | bc -l
- 我上面的代码四舍五入到一个较小的值,我想要更大的值 例如如果ans是4696.9466,它将四舍五入到4696.946而4696.947是我想要的。所以,建议任何编辑
答案 0 :(得分:0)
您可以将bc
发送到printf
:
echo "scale = 4; $sum/$n" | bc -l | xargs printf '%.*f\n' 3
从你的例子:
$ echo "scale = 4; 4696.9466" | bc -l | xargs printf '%.*f\n' 3
4696,947
答案 1 :(得分:0)
将脚本的最后一行从echo "scale = 3; $sum/$n" | bc -l
更改为
printf %.3f $(echo "$sum/$n" | bc -l)
printf
会正确地完成它。例如,
$ sum=1345
$ n=7
$ echo "$sum/$n" | bc -l
192.14285714285714285714
$ printf %.3f $(echo "$sum/$n" | bc -l)
192.143