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.