是否可以使用printf将此整数输出为以下形式的float?

时间:2012-10-22 17:18:42

标签: bash

在脚本中,我存储从变量中执行多个命令的累计时间(以毫秒为单位),我们称之为total_elapsed_Time。这包含例如像

这样的价值观
1001

12

现在,我想要的是以下面的形式输出这个值(带有训练毫秒的时间)

1.001

表示第一个值,

0.012

表示第二个值。目前,我这样做

printf '%d.%03d s' "$((total_elapsed_time / 1000))" "$((total_elapsed_time % 1000))"

这没关系,似乎有效,但我想知道是否有更简单的方法(因此我只需要将变量传递给printf,printf负责格式化数字)。

1 个答案:

答案 0 :(得分:2)

for x in 1001 12 1 10 100 1000 10000 ; do
    x=00$x                              # Prepend two zeros, so we can safely
    x=${x:0: -3}.${x: -3}               # insert the dot on the third position from right.
    printf '%.3f\n' $x
done