[英]How to display number to two decimal places in bash function
如何取百分之一秒的數字,並以秒為單位顯示到小數點后兩位? 我不確定要遵循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
,將結果四舍五入到小數點后兩位,並將結果分配給變量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
您將以0
bc
,而不是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")
下面可以完成2位小數精度,
echo $T | bc -l | xargs printf "%.2f"
“ bc”和“ dc”都被截斷而不是四舍五入,所以現在我更喜歡Perl
如果“ N”中包含您的秒數,則:
$ perl -e "printf('%.2f', $N/100)"
我從不曾是Perl的支持者,但現在它無處不在,並且最終我被搖擺使用它而不是sed / awk等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.