seguito le divide l'uscita di date +%N
da 1000000000
, arrotonda il risultato a due cifre decimali e assegna il risultato alla variabile T
.
printf -v T "%.2f" $(bc -l <<< "$(date +%N)/1000000000")
Se si desidera solo per stampare la roba,
bc <<< "scale=2; $(date +%N)/1000000000"
Se non ti piace bc
e si desidera utilizzare dc
(che è un po 'più leggero e molto più divertente da usare in quanto è polacca inversa),
dc <<< "2 k $(date +%N) 1000000000/p"
notare la differenza, con printf
avrete la leader 0
, non con bc
e dc
. C'è un'altra differenza tra printf
e bc
(o dc
): printf
round al numero più vicino a due posizioni decimali, mentre bc
(o dc
) rounds correggere a due posizioni decimali. Se si desidera che quest'ultimo comportamento e di assegnare a una variabile T
il risultato, è possibile utilizzare, ad esempio,
T=$(dc <<< "2 k $(date +%N) 1000000000/p")
o, se si vuole anche il principale 0
:
T=0.$(dc <<< "2 k $(date +%N) 1000000000/p")
fonte
2012-11-29 18:25:34
bash esegue solo aritmetica intera. La tua domanda è in qualche modo fuorviante, come stai chiedendo di visualizzare un numero con due cifre decimali, e il codice che mostri mostra chiaramente l'aritmetica in virgola mobile. –
Utilizzare [printf] [1] e piggyback su codice long-tested. [1]: http://stackoverflow.com/questions/4377871/sprintf-in-shell-scripting –