确定浮点数中的小数位数

时间:2015-02-03 16:43:18

标签: bash shell

我希望运行一个命令(例如ls -lrt)49次,并且每次运行前20毫秒。我在bash文件中写的是:

 for i in `seq 1 49`;
     do
     v=6.$((i*20)  
     sleep $v && ls -lrt
     done

但它显然没有区分像i等于4的情况和i等于40的情况,因为两者都导致v = 6.8。我需要的是等待6.080为i = 4和6.800为i = 40。

2 个答案:

答案 0 :(得分:2)

您可以使用printf格式化数字:

printf -v v '6.%03d' $((i*20))

-v v指定变量$v应保存结果。

答案 1 :(得分:1)

v=$(echo "scale=2;6+$i*0.02"|bc)

怎么样?

如果结果大于7,这将继续增加,但在49之前不会发生。但我个人认为它比字符串连接更好。