How should I take a number that is in hundreths of seconds and display it in seconds to two decimal places? Psuedo code to follow the dTime function I am not sure about but you\
Bash has a printf function built in:
printf "%0.2f\n" $T
Below can be done for 2 decimal precision ,
echo $T | bc -l | xargs printf "%.2f"
"bc" and "dc" both truncate rather than round, so nowadays I prefer Perl
If "N" has your number of hundreths of seconds in it then:
$ perl -e "printf('%.2f', $N/100)"
I was never a Perl supporter but it is now ubiquitous and I have finally been swayed to using it instead of sed/awk etc.
The following divides the output of date +%N
by 1000000000
, rounds the result to two decimal places and assigns the result to the variable T
.
printf -v T "%.2f" $(bc -l <<< "$(date +%N)/1000000000")
If you just want to print the stuff,
bc <<< "scale=2; $(date +%N)/1000000000"
If you don't like bc
and want to use dc
(which is a bit lighter and much funnier to use as it's reverse polish),
dc <<< "2 k $(date +%N) 1000000000 / p"
Notice the difference, with printf
you'll have the leading 0
, not with bc
and dc
. There's another difference between printf
and bc
(or dc
): printf
rounds to the nearest number to two decimal places, whereas bc
(or dc
) rounds correct to two decimal places. If you want this latter behavior and assign to a variable T
the result, you can use, e.g.,
T=$(dc <<< "2 k $(date +%N) 1000000000 / p")
or, if you also want the leading 0
:
T=0.$(dc <<< "2 k $(date +%N) 1000000000 / p")