确定浮点数的小数位数

Determining the number of decimals in a float number

我想 运行 一个命令(例如 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。我需要的是等待 i=4 的 6.080 和 i=40 的 6.800。

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

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

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

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

如果结果大于 7,这将继续增加,尽管直到 49 才会发生。但我个人认为它比字符串连接更好。