Sau đây chia đầu ra của date +%N
bởi 1000000000
, viên đạn kết quả đến hai chữ số thập phân và gán kết quả vào biến T
.
printf -v T "%.2f" $(bc -l <<< "$(date +%N)/1000000000")
Nếu bạn chỉ muốn in những thứ,
bc <<< "scale=2; $(date +%N)/1000000000"
Nếu bạn không thích bc
và muốn sử dụng dc
(đó là một chút nhẹ hơn và hài hước hơn nhiều để sử dụng vì nó là bóng ngược),
dc <<< "2 k $(date +%N) 1000000000/p"
Chú ý sự khác biệt, với printf
bạn sẽ có hàng đầu 0
, không phải với bc
và dc
. Có một sự khác biệt giữa printf
và bc
(hoặc dc
): printf
vòng đến số gần nhất đến hai chữ số thập phân, trong khi bc
(hoặc dc
) làm tròn chính xác đến hai chữ số thập phân. Nếu bạn muốn hành vi sau này và gán cho một biến T
kết quả, bạn có thể sử dụng, ví dụ,
T=$(dc <<< "2 k $(date +%N) 1000000000/p")
hoặc, nếu bạn cũng muốn hàng đầu 0
:
T=0.$(dc <<< "2 k $(date +%N) 1000000000/p")
Nguồn
2012-11-29 18:25:34
bash chỉ thực hiện số học số nguyên. Câu hỏi của bạn có phần gây hiểu nhầm khi bạn hỏi về việc hiển thị một số đến hai chữ số thập phân và mã bạn hiển thị rõ ràng thực hiện số học dấu chấm động. –
Sử dụng [printf] [1] và piggyback trên mã được thử nghiệm dài. [1]: http://stackoverflow.com/questions/4377871/sprintf-in-shell-scripting –