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
Bash には printf 関数が組み込まれています。
printf "%0.2f\n" $T
以下は、 の出力を で除算しdate +%N
、1000000000
結果を小数点以下 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 桁に丸められます。この後者の動作が必要で、結果を変数に割り当てる場合は、たとえば、次のように使用できます。0
bc
dc
printf
bc
dc
printf
bc
dc
T
T=$(dc <<< "2 k $(date +%N) 1000000000 / p")
または、先頭も必要な場合0
:
T=0.$(dc <<< "2 k $(date +%N) 1000000000 / p")