Comment dois-je prendre un nombre de centièmes de secondes et l’afficher en secondes à deux décimales? Code Psuedo pour suivre la fonction dTime Je ne suis pas sûr mais vous aurez ce que je veux, je pense.
function time { echo "$(date +%N)/10000000" } function dTime { echo "($1/100).(${$1:${#1}-3:${#1}-1})" } T=$time sleep 2 T=$dTime T
Bash a une fonction printf intégrée:
printf "%0.2f\n" $T
Ce qui suit divise la sortie de date +%N
par 1000000000
, arrondit le résultat à deux décimales et affecte le résultat à la variable T
printf -v T "%.2f" $(bc -l <<< "$(date +%N)/1000000000")
Si vous voulez juste imprimer les trucs,
bc <<< "scale=2; $(date +%N)/1000000000"
Si vous n'aimez pas bc
et que vous voulez utiliser dc
(qui est un peu plus léger et beaucoup plus drôle à utiliser que le reverse polish),
dc <<< "2 k $(date +%N) 1000000000 / p"
Notez la différence, avec printf
vous aurez le 0
, pas avec bc
et dc
. Il existe une autre différence entre printf
et bc
(ou dc
): printf
arrondit au nombre le plus proche à deux décimales, tandis que bc
(ou dc
) arrondit à deux décimales. Si vous voulez ce dernier comportement et atsortingbuez à une variable T
le résultat, vous pouvez utiliser, par exemple,
T=$(dc <<< "2 k $(date +%N) 1000000000 / p")
ou, si vous voulez aussi le premier 0
:
T=0.$(dc <<< "2 k $(date +%N) 1000000000 / p")
Ci-dessous peut être fait pour 2 précision décimale,
echo $T | bc -l | xargs printf "%.2f"