Tinggi, saya perlu menguji kalkulator presisi sewenang-wenang saya, dan bc
tampaknya seperti tolok ukur yang bagus untuk membandingkan, bagaimanapun, bc
tidak memotong hasil dari setiap perkalian dengan apa yang tampaknya menjadi skala maksimum dari masing-masing operan yang terlibat.
Apakah ada cara cepat untuk mematikan ini atau secara otomatis mengatur skala setiap perkalian dengan jumlah skala faktor sehingga tidak kehilangan presisi?
Jika Anda memiliki solusi yang lebih elegan untuk ini selain melibatkan sesuatu bc
, saya sangat menghargai Anda membagikannya.
Contoh:
$ bc <<< '1.5 * 1.5'
2.2
Jawaban sebenarnya adalah 2,25.
bc
calculator
PSkocik
sumber
sumber
Jawaban:
Anda dapat mengontrol skala yang
bc
dihasilkan denganscale=<#>
argumen.Menggunakan contoh Anda:
Anda juga dapat menggunakan
-l
sakelar (terima kasih ke @manatwork) yang akan menginisialisasi skala ke 20 alih-alih standar 0. Misalnya:Anda dapat membaca lebih lanjut tentang
scale
dibc
halaman manual .sumber
bc -l
. " -L (Huruf ell.) Tentukan fungsi matematika dan inisialisasi skala ke 20, bukan nol default" -bc
spesifikasimin(max(sx,sy,scale),sx+sy)
manasx
dansy
adalah skala darix
dany
dalamx*y
. Pengaturanscale=scale(x)+scale(y)
akan memberikan presisi maksimum yang dibutuhkan. Mengatur skala ke angka yang lebih tinggi (seperti 1000) tidak akan meningkatkan skala hasilnya. Variabel skala hanya mempengaruhi s secara langsung hasil pembagianscale=1000; a/1
akan menghasilkan hasil dengan 1000 digit desimal (setelah titik) tidak peduli apa skala dari sebelumnya.Coba ini :
Cari manusia bc untuk variabel skala
sumber
Saya telah membuat fungsi bash ini yang tidak akan menampilkan nol trailing
Contoh:
calc 1.25^3
= 1.953125sumber