ฉันกำลังพยายามแปลงไบต์จำนวนมากเป็นกิกะไบต์
เสียงสะท้อน $(( 41003021288998461440 / 1073741824 ))
สิ่งนี้ส่งคืน 3827300985 ซึ่งไม่ถูกต้อง คำตอบที่ถูกต้องคือ 38187039354 11 หลักกับ 10
การใช้ 'สเกล = 30' ที่แตกต่างกันหรือการไพพ์ผ่าน bc จะไม่เปลี่ยนคำตอบ ผมทำอะไรผิดหรือเปล่า?
ฉันลองสิ่งนี้แทน:
awk -v var1=41003021288998461440 -v var2=1073741824 'BEGIN { พิมพ์ ( var1 / var2 ) }' OFMT='%25g'
ซึ่งส่งคืน "3.8187e+10" ซึ่งดูเหมือนว่าจะเป็นตัวเลขที่ถูกต้อง แต่ฉันก็คิดไม่ออกว่าจะไม่ให้อยู่ในสัญกรณ์วิทยาศาสตร์ได้อย่างไร Printf "%12d" ไม่ได้ช่วยเพราะดูเหมือนจะไม่สามารถจัดการการแบ่งในพารามิเตอร์ที่ส่งผ่านได้
ฉันสงสัยว่าการแก้ไขปัญหาสัญกรณ์วิทยาศาสตร์ awk น่าจะง่ายกว่า แต่ฉันก็ยังต้องการทราบว่าเหตุใดการหารแบบยาวด้วย echo จึงส่งกลับผลลัพธ์ที่ผิดทั้งหมด เป็นเรื่องที่น่ากังวลมาก และเนื่องจากฉันคำนวณด้วยวิธีนั้นบ่อยๆ ฉันจึงอยากทราบว่าต้องทำอย่างไรเพื่อให้เสียงสะท้อนคำนวณได้อย่างถูกต้อง
ฉันรู้ด้วยว่าฉันเคยแก้ปัญหานี้ไปแล้วครั้งหนึ่ง... แต่ฉันทำพลาดไปแล้วและตอนนี้จำไม่ได้แล้ว เฮ้อ