12

100 秒単位の数値を秒単位で小数点以下 2 桁まで表示するにはどうすればよいですか? dTime関数に従う疑似コードはよくわかりませんが、私が目指しているものを手に入れることができると思います。

function time {
    echo "$(date +%N)/10000000"
}

function dTime {
    echo "($1/100).(${$1:${#1}-3:${#1}-1})"
}

T=$time
sleep 2
T=$dTime T
4

4 に答える 4

38

Bash には printf 関数が組み込まれています。

printf "%0.2f\n" $T
于 2012-11-29T18:14:31.470 に答える
6

以下は、 の出力を で除算しdate +%N1000000000結果を小数点以下 2 桁に丸め、結果を変数 に代入しますT

printf -v T "%.2f" $(bc -l <<< "$(date +%N)/1000000000")

印刷したいだけなら、

bc <<< "scale=2; $(date +%N)/1000000000"

気に入らずbc、使用したい場合dc(リバース ポリッシュなので、少し軽くて面白いです)、

dc <<< "2 k $(date +%N) 1000000000 / p"

違いに注意してください。 とではなくprintf、先頭に があります。と(または)の間には別の違いがあります。小数点以下 2 桁に最も近い数値に丸められますが、 (または) は小数点以下 2 桁に丸められます。この後者の動作が必要で、結果を変数に割り当てる場合は、たとえば、次のように使用できます。0bcdcprintfbcdcprintfbcdcT

T=$(dc <<< "2 k $(date +%N) 1000000000 / p")

または、先頭も必要な場合0:

T=0.$(dc <<< "2 k $(date +%N) 1000000000 / p")
于 2012-11-29T18:25:34.553 に答える