Bash:
การปัดเศษของตัวเลข
วิธีการ:
นี่คือข้อมูลพื้นฐานเกี่ยวกับการปัดเศษใน Bash:
# ปัดลงโดยใช้ 'floor' กับ bc
echo "scale=0; 3.49/1" | bc
# ปัดขึ้นโดยใช้ 'ceiling' กับ bc
echo "scale=0; 3.01/1" | bc -l
# ปัดเศษเป็นจำนวนเต็มโดยใช้ printf
printf "%.0f\n" 3.49
# วิธีการปัดเศษเป็นจำนวนเต็มโดยใช้ bc
echo "(3.49+0.5)/1" | bc
ผลลัพธ์ตัวอย่าง—ตรงมาจากปากของเทอร์มินัล:
3 # ปัดลง (floor)
4 # ปัดขึ้น (ceiling)
3 # ปัดเศษเป็นจำนวนเต็มที่ใกล้เคียงที่สุด (ด้วย printf)
3 # ปัดเศษเป็นจำนวนเต็มที่ใกล้เคียงที่สุด (ด้วย bc)
ดำดิ่งลึก
ในยุคก่อน ไม่มี bc
หรือ printf
ในสคริปต์ Bash เพื่อทำเวทมนตร์ด้านคณิตศาสตร์ คนโบราณต้องพึ่งพาเครื่องมือภายนอกหรือวิธีแก้ปัญหาที่ฉลาด. ตอนนี้ bc
ช่วยให้คุณทำคณิตศาสตร์แบบเที่ยงตรงได้ ควรทราบว่า bc
ไม่ได้ปัดเศษโดยค่าเริ่มต้น—มันจะปัดลง ส่วน scale จะตั้งค่าการกระทำของจุดทศนิยม
ทางเลือกอื่น? คุณอาจใช้ awk
สำหรับการปัดเศษโดยไม่ต้องเปลี่ยนไปใช้ bc
หรือใช้ perl
สำหรับความต้องการคณิตศาสตร์ที่หนักกว่า สำหรับผู้ที่ชอบความท้าทาย ลองใช้ Bash แบบบริสุทธิ์ เช่น การจัดการสตริงแบบวนซ้ำ - แต่ทำไมล่ะ?
เกี่ยวกับรายละเอียด bc
ไม่เพียงแค่ปัดเศษเท่านั้น มันทำคณิตศาสตร์ได้มากมาย—ปรับขนาด หาไซน์ คำนวณรากที่สอง คุณตั้งชื่อมันได้ ด้วย printf
มันเกี่ยวกับการจัดรูปแบบข้อความมากกว่า แต่เฮ้ มันปัดเศษตัวเลข ดังนั้นเราจึงไม่บ่น
ดูเพิ่มเติม
สำหรับผู้ที่กระหายความรู้เพิ่มเติม:
- คู่มือ GNU
bc
: https://www.gnu.org/software/bc/manual/html_mono/bc.html - คำสั่ง Bash
printf
: https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-printf - คู่มือผู้ใช้ AWK (สำหรับการปัดเศษและการประมวลผลข้อความอื่นๆ): https://www.gnu.org/software/gawk/manual/gawk.html
- คณิตศาสตร์เพิ่มเติมใน Bash, สคริปต์ และเทคนิคตัวเลข: https://mywiki.wooledge.org/BashFAQ/022