Apa perbedaan antara dc
dan bc
kalkulator?
Kapan saya harus menggunakan dc
dan kapan bc
?
command-line
bc
calculator
syntagma
sumber
sumber
expr
sangat sering untuk perhitungan sederhana pada baris perintah dan dalam skrip.Jawaban:
dc
adalah alat yang sangat kuno dan agak lebih tua daribc
. Mengutip halaman Wikipedia :Sintaksnya adalah notasi polish terbalik, yang pada dasarnya berarti bahwa argumen (yaitu angka) datang pertama diikuti oleh operator. Contoh dasar
dc
penggunaannya adalah:Di mana
p
diperlukan untuk mencetak hasil perhitungan.bc
di sisi lain menggunakan notasi infiks yang lebih akrab dan dengan demikian lebih intuitif untuk digunakan. Berikut ini adalah contohbc
penggunaan:Yang mana yang akan digunakan?
bc
distandarisasi oleh POSIX dan mungkin lebih portabel dari keduanya (setidaknya pada sistem modern). Jika Anda melakukan pekerjaan kalkulator manual maka itu pasti pilihan (kecuali Anda agak masokis).dc
masih dapat memiliki kegunaannya, di sini adalah kasus di mana notasi polish terbalik berguna. Bayangkan Anda memiliki program yang menampilkan aliran angka yang ingin Anda totalkan, misalnya:Untuk melakukan ini dengan
dc
sangat sederhana (setidaknya dengan implementasi modern di mana setiap operator dapat mengambil lebih dari dua angka) karena Anda hanya perlu menambahkan a+p
ke aliran, misalnya:Tetapi dengan
bc
itu lebih kompleks karena kita tidak hanya perlu meletakkan di+
antara setiap angka dan memastikan semuanya ada di baris yang sama, tetapi juga memastikan ada baris baru di akhir:sumber
gen_nums
contoh penggunaan yang sangat rumitbc
. Ini bisa disederhanakan menjadi:gen_nums | paste -sd+ | bc
bc
hanya alat ujung depan yang menyusunbc
notasi dengan notasidc
dan menyalurkannya ke dalamdc
untuk mendapatkan hasilnya. Pada FreeBSD masih ada-c
flagbc
yang dengannya Anda masih dapat mengkompilasi kedc
notasi. For example
echo '3 * 4' | bc` sama denganecho '3 * 4' | bc -c | dc
. Lihat linux.die.net/man/1/bc dan freebsd.org/cgi/man.cgi?query=bc&sektion=1dc
yang kamu gunakan? Pada Ubuntu 14.04 dan OS X,+
operator selalu beroperasi tepat pada dua nilai dari stackdc
penggunaan:gen_nums_nonnegative | dc -e '0 0 [+?z1<m]dsmxp'
. Script ini untukdc
membaca dan menambahkan angka satu per satu dalam satu lingkaran dan kemudian mencetak hasilnya. Lihat catatan tentang angka negatif.bc -c
melakukan sesuatu yang aneh dan berbeda (dan-c
benderanya tidak berdokumen). Jika saya mencoba untuk mem-pipe-nyadc
, saya mendapatkan banyak kesalahan (dan output tanpa piping ke dalamdc
adalah sangat samar@iK3:K4:*W@r\n@i
).Perbedaan mendasar antara keduanya adalah yang
dc
menggunakan notasi Polandia terbalik . Itu membutuhkan perintah eksplisit bahkan untuk menghasilkan output.Anda dapat menambahkan dua bilangan bulat
bc
dengan mengatakan:dan itu akan menghasilkan
6
pada garis dengan sendirinya. Namun,dc
Anda harus mengatakan:Anda juga dapat melakukan banyak hal menyenangkan menggunakan
dc
, misalnya merujuk pada jawaban saya di sini untuk memproduksimenggunakan
dc
.sumber
dc bcdc
adalah kalkulator sedangkanbc
bahasa sebenarnya. Lihat halaman manual mereka.Ini benar-benar tergantung pada apa yang Anda ingin lakukan secara matematis. Beberapa operasi tidak dimungkinkan menggunakan
dc
. Saya telah menggunakan keduanya selama bertahun-tahun sebagai tambahan pada beberapa alat kalkulator baris perintah lainnya. Lihat " Pemecah ekspresi baris perintah? " Untuk beberapa contoh tambahan.sumber
dc
menjadi notasi polish kalkulator terbalik dan karena aku selalu menggunakan HP terbalik polish kalkulator notasi sebenarnya saya lebih suka menggunakandc
untukbc
tapi aku akan mengatakan mereka berdua kapan saja masih digunakan Anda perlu melakukan perhitungan matematika yang kompleks. Saya sering menggunakannya untuk mengonversi angka b / w basis 10 ke basis 16 dan basis 2. Tetapi saya telah menggunakannya untuk menghitung kolom dalam data tabular juga dari dalam skrip AWK.bc
adalah bahasa dalam arti yang membuatnyadc
ramah manusia - bukan karena lebih kuat. Hari-hari ini aplikasi berbagi libs, tapibc
itu disebut bahasa dandc
sebuah kalkulator karenadc
melakukan matematika danbc
berbicara matematika - untukdc
. Iniman
halaman yang lebih lama : Bahasa yang disebutBC
[1] telah dikembangkan yang menerima program yang ditulis dalam bahasa tingkat yang lebih tinggi dan mengkompilasi output yang ditafsirkan oleh DC. Beberapa perintah yang dijelaskan di bawah ini dirancang untuk antarmuka kompiler dan tidak mudah bagi pengguna manusia untuk memanipulasi.dc
juga bahasa. mis. codegolf.stackexchange.com/a/47921/11259Menurut pendapat saya yang sederhana dan sesedikit mungkin kata, GNU dc berbeda dari GNU bc dalam 3 cara:
1) Jika perpustakaan matematika bc keluar dari keprihatinan, untuk menyimpan sebanyak mungkin penekanan tombol (dalam kata-kata Jan ewukasiewicz: notasi bebas kurung) ketika melakukan aritmatika dasar, untuk lebih berkonsentrasi pada hal-hal penting dan untuk menghindari gangguan.
2) Dalam baris perintah Microsoft Windows 7, GNU dc mengkonsumsi lebih sedikit memori (~ 320K) daripada GNU bc (~ 360K).
3) Banyak kontrol granular dalam GNU dc daripada di GNU bc, misalnya, perintah stack dan register tidak ada pada GNU bc.
Versi 1.07.1 win32 untuk keduanya ada di https://embedeo.org/ws/command_line/bc_dc_calculator_windows/
sumber