ดูเหมือนว่า bc ไม่สนับสนุนการดำเนินการลอยเมื่อฉันecho 1/8 | bc
ได้รับฉันเป็นศูนย์
ฉันตรวจสอบbc (1)
แล้ว แต่มันไม่ได้พูดถึงfloat
ดังนั้นฉันสงสัยว่ามันรองรับหรือไม่
ดูเหมือนว่า bc ไม่สนับสนุนการดำเนินการลอยเมื่อฉันecho 1/8 | bc
ได้รับฉันเป็นศูนย์
ฉันตรวจสอบbc (1)
แล้ว แต่มันไม่ได้พูดถึงfloat
ดังนั้นฉันสงสัยว่ามันรองรับหรือไม่
คำตอบ:
bc
ไม่ได้ทำทศนิยม แต่ทำทศนิยมแม่นยำ -l
ธง Hauke กล่าวโหลดห้องสมุดคณิตศาสตร์สำหรับเช่น ฟังก์ชั่นตรีโกณมิติ แต่มันก็หมายถึง
[ ... ] เริ่มต้นขนาดคือ 20
scale
เป็นหนึ่งใน "ตัวแปรพิเศษ" ที่กล่าวถึงในหน้า man คุณสามารถตั้งค่า:
scale=4
เมื่อใดก็ตามที่คุณต้องการ (ไม่ว่าจะ-l
ใช้หรือไม่ก็ตาม) มันหมายถึงจำนวนของตัวเลขที่สำคัญที่ใช้ในการทศนิยมที่ กล่าวอีกนัยหนึ่งการแก้ปัญหาที่ตามมาจะถูกปัดเศษเป็นจำนวนหลักนั้นหลังจากระดับทศนิยม (= ความแม่นยำคงที่)
สเกลเริ่มต้น-l
คือ 0 หมายถึงปัดเศษเป็นจำนวนเต็ม
หน้าคนพูดว่า:
หาก bc ถูกเรียกใช้ด้วยอ็อพชัน -l ไลบรารีคณิตศาสตร์จะถูกโหลดไว้ล่วงหน้า [... ]
ความเข้าใจที่ดีขึ้นนั้นสามารถปรับปรุงได้จริง ๆ ...
1) ตัวเลขใน bc มีสเกล สเกลของตัวเลขไม่ควรสับสนกับตัวคูณสเกล 'สเกล' ของโลกเดียวกันนั้นใช้เป็นฟังก์ชันในการค้นหาสเกลของตัวเลขหรือเป็นพารามิเตอร์เพื่อตั้งค่าตัวคูณสเกล
echo "scale=scale(1.1);11/10" | bc will return 1.1
2) ตัวประกอบสเกลกำหนดจำนวนตัวเลขที่ถูกเก็บไว้ทางด้านขวาของจุดทศนิยมเมื่อทำการดำเนินการ ถ้า s เป็นตัวประกอบสเกลปัจจุบัน sa คือสเกลของตัวถูกดำเนินการตัวแรก a, sb คือสเกลของตัวถูกดำเนินการที่สอง b ผลลัพธ์จะถูกตัดทอนดังนี้:
scale of result
a+b max(sa,sb)
a-b max(sa,sb)
a*b min(sa+sb , max(s,sa,sb))
a/b s
a%b so that a = b*quotient + remainder; remainder has sign of a
a^b min(sa×|b|, max(s,sa)); b must be integer
sqrt(a) max(s,sa)
3) ที่จุดเริ่มต้น bc เป็นตัวประมวลผลล่วงหน้าของ dc ตอนนี้ในหลาย ๆ ระบบ bc เป็นโปรแกรมแบบสแตนด์อโลน
แหล่งที่มา: [ https://plan9.io/magic/man2html/1/dc]
echo "scale=4; 1/8" | bc