2016-03-29 38 views
0
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 

- 我的上面的代码舍入高达一个更低的值,其中i想越大一个 例如如果答案是4696.9466,那么四舍五入到4696.946,而4696.947是我想要的。所以,提出任何修改舍入到3个小数点只是截断其余

+0

可以通过您截断,而不是四舍五入... – 123

回答

0

你可以管你bcprintf

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 
+0

没有静止下来,以相同的结果时,我使用的变量 –

+0

规模必须等于'4'引起的。更新。 – SLePort

0

更改脚本的最后一行从echo "scale = 3; $sum/$n" | bc -l

printf %.3f $(echo "$sum/$n" | bc -l) 

printf将对其进行修正correc TLY。例如,

$ sum=1345 
$ n=7 
$ echo "$sum/$n" | bc -l 
192.14285714285714285714 

$ printf %.3f $(echo "$sum/$n" | bc -l) 
192.143 
+0

是的,它工作。谢谢! –

+0

:)我的荣幸。如果有效,请接受答案。接受答案会通知其他用户问题已解决。 –