Bagaimana cara menunjukkan nol sebelum titik desimal dalam bc?


9
echo "scale=3;1/8" | bc

muncul .125di layar. Bagaimana cara menunjukkan 0.125jika hasil keluaran kurang dari satu?

Jawaban:


9

bctidak dapat menghasilkan nol sebelum titik desimal, Anda dapat menggunakan printf :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125

Perintah yang lebih bisa dibaca manusia. ;-)
Kevin Dong

1

Anda bisa menyalurkannya ke awk

echo "scale=3;1/8" | bc | awk '{printf "%.3f\n", $0}'

atau Anda bisa menggunakan awk untuk itu semua

awk '{printf "%.3f\n", 1/8}' <<< ""

Keluaran

0.125

Kenapa harus kita lakukan <<< ""?
Kevin Dong

@KevinDongNaiJia awk membutuhkan file input untuk bekerja, ini menciptakan dan mengosongkan here string. Jadi pada dasarnya berpura-pura ada file kosong di akhir, kalau tidak awk akan membaca dari stdin. Info lebih lanjut di sini

@cuonglm jadi Anda bisa, tolong jangan edit jawaban saya.

@cuonglm Petty downvote, bagus!

1
@ JID: Tidak semua shell didukung di sini, Anda perlu menentukannya untuk orang lain. Menggunakan BEGINblok mencegah Anda dari masalah itu dan itu portabel.
cuonglm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.