bc
menangani angka sebagai bilangan bulat:
# echo "100/3" | bc
33
bc -l
menangani angka sebagai objek titik mengambang:
# echo "100/3" | bc -l
33.33333333333333333333
Apakah ada cara untuk membatasi jumlah digit setelah titik desimal?
command-line
bc
Adam Matan
sumber
sumber
scale=0;1234*1.1
, Anda harus menuliskannyascale=0;1234*1.1/1
untuk mendapatkannya1357
. Jika tidak, berapa pun nilainyascale
, Anda dapatkan1357.4
.1234*1.0
Anda memberi1234.0
Jawaban:
Setel
scale
variabel khusus:sumber
$ echo "scale=2; (100/180)*180" | bc
memberikan 99,00 :(.5
.~$ echo "scale=2; 12/104" | bc
.11
Jika dibulatkan ini akan menjadi.12
. Namun, itu masih harus melakukan pekerjaan untuk tugas saya.echo "result = (100/180) * 180; scale=2; result / 1" | bc -l
. Sekarang kamu mengerti99.99
.scale
hanya berfungsi untuk divisi; jika beberapa geek membutuhkannya dalam perkalian, maka Anda dapat melakukannya dengan menggunakan manipulasi string. Katakan jika Anda perlu memperbanyak32 * 0.60
, jawabannya adalah19.20
. Jika Anda perlu mendapatkannya sendiri 19 sebagai jawaban Anda bisa mendapatkannya dengan metode yang berbeda.Menggunakan Manipulasi String
Sintaks Manipulasi String:,
${Variable%pattern}
ini akan menghapus pola pencocokan pendek yang muncul setelahnya%
. Untuk detail manipulasi string lebih lanjut, lihat Panduan Script Bash Lanjutan .Menggunakan
Scale
seperti yang dinyatakan oleh**chronitis**
Untuk menghilangkan trailing 0s, alih-alih manipulasi string, kita juga bisa melakukan pembagian dengan 1.
sumber
Selain jawaban sebelumnya
Kembali
Tambahkan operasi Matematika untuk mendapatkan hanya 2 angka desimal - (NUMBER * 100) / 100
Sekarang kembali
sumber
Anda juga dapat menggunakan perintah printf untuk membulatkan hasil hingga 3 desimal
sumber
Membulatkan
scale = 2 memotong jawaban untuk dua digit desimal, tetapi kita dapat mencapai pembulatan seperti:
sumber