Linux Bash shell hanya mendukung aritmatika bilangan bulat. Ia tidak dapat memahami atau mengatasi perhitungan floating point. Utilitas bc memberi Anda perhitungan floating point presisi secara interaktif dan dalam skrip shell.
Mengapa Bash Hanya Mendukung Integer
Keputusan desain asli untuk membatasi shell UnixBourne ke aritmatika bilangan bulat mungkin berakar pada pemetaan komputasi awal bilangan bulat ke satu byte RAM . Kita mungkin tidak pernah tahu apa sebenarnya yang melatarbelakangi keputusan tersebut. Juga, dalam hal ini, mengapa versi Linux dari shell Bourne, shell Bash, memilih untuk mengikutinya.
Dengan sendirinya, Bash tidak dapat melakukan penghitungan pada bilangan floating point, dan penghitungan pada bilangan bulat yang memiliki bagian pecahan pada jawabannya , dilaporkan sebagai nilai bilangan bulat terpotong. Hal ini berlaku pada baris perintah dan skrip Bash shell. Tergantung pada kasus penggunaan Anda, ini bisa menjadi masalah atau terhenti.
Linux hadir dengan dua aplikasi utilitas yang memungkinkan Anda melakukan perhitungan floating point. Salah satunya adalah DC. Ini sedikit aneh, beroperasi seperti dalam notasi Polandia terbalik. Alat lainnya adalah bc. Ini dapat digunakan secara interaktif atau sebagai perintah, dan itulah solusi yang akan kita bahas di sini.
Masalahnya
Mari kita buat Bash membagi enam dengan tiga.
echo $((6/3))
Kami mendapatkan jawaban yang kami harapkan dua. Sekarang mari kita bagi enam dengan tujuh. Jelas, itu akan memiliki jawaban pecahan.
echo $((6/7))
Zero jelas salah. Ayo coba lagi, bagi 16 dengan 7.
echo $((16/7))
Kita mendapat jawaban dua. Yang terjadi adalah bagian pecahan dari jawaban tersebut dibuang, sehingga jawabannya terpotong. Tidak ada bagian pecahan pada contoh pertama, jadi kita mendapatkan jawaban yang benar.
Contoh kedua tidak memiliki elemen bilangan bulat dalam jawabannya, hanya bagian pecahan. Karena bagian pecahannya telah dibuang, maka jawaban yang ditampilkan adalah nol. Pada contoh ketiga, 7 habis dibagi 16, dengan sisa pecahan. Sekali lagi, sisanya dibuang, dan hasilnya terpotong.
Menggunakan bc Secara Interaktif
Anda dapat menggunakan bc sebagai kalkulator interaktif dengan mengetik bc dan menekan tombol “Enter”.
bc
Aplikasi bc diluncurkan, mengumumkan nomor versinya, dan kemudian menunggu versi Anda memasukkan. Mengetik perhitungan dan menekan “Enter” menyebabkan bc mengevaluasi perhitungan dan menampilkan jawabannya.
16 * 41024 / 322^2 * 1024
Anda dapat menggunakan “Ctrl+L” untuk menghapus layar, dan “Ctrl+D” untuk keluar dari program. Mari kita coba perhitungan yang jawabannya akan memiliki komponen pecahan.
22 / 7
Bukan itu yang kami harapkan. Berlawanan dengan intuisi, meskipun bc memungkinkan kita menggunakan presisi sembarang, secara default bc tidak akan menampilkan koma desimal atau angka apa pun yang mengikutinya.
Untuk membuat jawaban sebenarnya terlihat, kita perlu memberi tahu bc berapa banyak tempat desimal yang akan ditampilkan. Kami melakukan ini dengan perintah “skala”. Kita akan meminta tujuh angka desimal, dan melakukan kembali penghitungan kita.
scale=722 / 7
Akhirnya, kita berhasil mencapai tujuan. Pengaturan “skala” tetap berlaku sampai Anda mengubahnya. Menyetel jumlah tempat desimal memberitahukan jumlah tempat maksimum yang akan ditampilkan. Jika suatu jawaban tidak memerlukan banyak tempat desimal, jawaban tersebut akan ditampilkan dengan jumlah tempat desimal yang diperlukan dan tidak lebih. Itu tidak diisi dengan angka nol yang tidak berarti.
scale=100.300003 * 0.5
Anda dapat membuat daftar perhitungan yang berbeda pada baris yang sama dengan menggunakan titik koma “;” untuk memisahkan mereka. Jawaban ditampilkan per baris seperti biasa, sesuai urutan perhitungannya.
25*6; 12,5 + 45,001; 3 + 5 + 7 + 9
Anda juga dapat memasukkan perintah “skala” ke dalam daftar.
scale=8; 22/7; skala=3; 0,3 * 0,071Perpustakaan Matematika Standar
Opsi -l (perpustakaan matematika standar) menyebabkan bc memuat sekumpulan fungsi, dan menyetel “skala” ke 20 tempat desimal.
bc -l22 / 7
Dengan pustaka standar dimuat, Anda dapat menggunakan fungsi-fungsi ini dalam perhitungan Anda.
s (x): Sinus x c (x): Kosinus x. a (x): Garis singgung busur x l (x): Logaritma natural dari x e (x): Eksponensial e terhadap nilai x j (n,x): Fungsi Bessel orde bilangan bulat n dari x.
Sine, cosinus, dan arctangent menggunakan nilai radian.
s (1.1) c (.891207) a (.628473)Mengirim Input ke bc pada Command Line
Anda dapat menggunakan pengalihan dan pipa untuk mengirim input ke bc. Ini memproses input Anda dan menampilkan jawabannya di jendela terminal.
Anda dapat mengarahkan ulang ke bc dengan atau tanpa opsi -l (perpustakaan matematika standar).
bc <<< 22/7bc -l