คุณมีสองคำถามที่นี่จริงๆ
ทำไมทุกคนต้องใช้คณิตศาสตร์เลขทศนิยม
ดังที่ Karl Bielefeldt ชี้ให้เห็นว่าตัวเลขจำนวนจุดลอยตัวช่วยให้คุณจำลองปริมาณอย่างต่อเนื่องและคุณสามารถค้นหาสิ่งเหล่านั้นได้ทุกที่ - ไม่เพียง แต่ในโลกทางกายภาพ แต่ยังรวมถึงสถานที่ต่างๆเช่นธุรกิจและการเงิน
ฉันเคยใช้เลขทศนิยมในหลาย ๆ พื้นที่ในอาชีพการเขียนโปรแกรมของฉัน: เคมี, ทำงานกับ AutoCAD และแม้แต่การเขียนโปรแกรมจำลอง Monte Carlo เพื่อคาดการณ์ทางการเงิน ในความเป็นจริงมีผู้ชายคนหนึ่งชื่อเดวิดอีชอว์ที่ใช้เทคนิคการสร้างแบบจำลองทางวิทยาศาสตร์แบบอิงจุดลอยตัวกับวอลล์สตรีทเพื่อสร้างเงินนับพันล้าน
และแน่นอนว่ามีคอมพิวเตอร์กราฟิก ฉันปรึกษาเกี่ยวกับการพัฒนา eye candy สำหรับส่วนต่อประสานผู้ใช้และพยายามทำเช่นนั้นทุกวันนี้โดยที่ไม่เข้าใจจุดลอยตัวตรีโกณมิติแคลคูลัสและพีชคณิตเชิงเส้นคงเป็นเหมือนการแสดงการต่อสู้ด้วยปืนพกด้วยปืนพก
ทำไมทุกคนจะต้องลอยเมื่อเทียบกับคู่ ?
ด้วยมาตรฐาน IEEE 754 แสดงมาตรฐาน 32 บิตลอยช่วยให้คุณมีประมาณ 7 ตัวเลขทศนิยมของความถูกต้องและเลขยกกำลังอยู่ในช่วง 10 -38ถึง 10 38 64 บิตคู่จะช่วยให้คุณประมาณ 15 ตัวเลขทศนิยมของความถูกต้องและเลขยกกำลังอยู่ในช่วง 10 -307ถึง 10 307
มันอาจดูเหมือนทุ่นลอยก็เพียงพอสำหรับสิ่งที่ใคร ๆ ก็ต้องการ แต่ก็ไม่ ตัวอย่างเช่นปริมาณในโลกแห่งความจริงจำนวนมากวัดเป็นทศนิยมมากกว่า 7 หลัก
แต่อย่างละเอียดยิ่งขึ้นมีปัญหาที่เรียกว่า "ข้อผิดพลาด roundoff" เรียกขาน การแทนจุดลอยตัวแบบไบนารีจะใช้ได้กับค่าที่ชิ้นส่วนที่เป็นเศษส่วนมีตัวหารคือกำลัง 2 เช่น 1/2, 1/4, 3/4 เป็นต้นหากต้องการเป็นตัวแทนเศษส่วนอื่น ๆ เช่น 1/10 คุณจะ "ปัดเศษ" ค่าเป็นเศษส่วนไบนารีใกล้เคียงที่สุด แต่มันผิดเล็กน้อย - นั่นคือ "ข้อผิดพลาด roundoff" จากนั้นเมื่อคุณคำนวณทางคณิตศาสตร์กับตัวเลขที่ไม่ถูกต้องความไม่ถูกต้องของผลลัพธ์อาจเลวร้ายยิ่งกว่าที่คุณเริ่มต้นด้วย - บางครั้งเปอร์เซ็นต์ความผิดพลาดจะทวีคูณหรือทวีคูณทวีคูณ
อย่างไรก็ตามยิ่งเลขฐานสองที่คุณต้องทำงานมากเท่าไหร่การแสดงเลขฐานสองแบบปัดเศษของคุณจะยิ่งใกล้เคียงกับจำนวนที่คุณพยายามแสดงดังนั้นข้อผิดพลาดของการปัดเศษจะมีขนาดเล็กลง จากนั้นเมื่อคุณทำคณิตศาสตร์กับมันถ้าคุณมีตัวเลขจำนวนมากที่จะทำงานกับคุณสามารถดำเนินการได้มากขึ้นก่อนที่ข้อผิดพลาดในการปัดเศษสะสมจะเกิดปัญหาขึ้น
ที่จริงแล้ว 64 บิตเป็นสองเท่าพร้อมด้วยทศนิยม 15 หลักของพวกเขานั้นไม่ดีพอสำหรับแอปพลิเคชั่นมากมาย ฉันใช้ตัวเลขจุดลอยตัว 80 บิตในปี 1985 และตอนนี้ IEEE กำหนดประเภทจุดลอยตัว 128 บิต (16 ไบต์) ซึ่งฉันสามารถจินตนาการได้ว่าใช้