เพื่อความชัดเจนถ้าฉันใช้ภาษาที่ใช้ IEE 754 ลอยและฉันประกาศ:
float f0 = 0.f;
float f1 = 1.f;
... แล้วพิมพ์มันออกมาฉันจะได้ 0.0000 และ 1.0000 - แน่นอน
แต่ IEEE 754 ไม่สามารถแสดงตัวเลขทั้งหมดตามเส้นจริงได้ ใกล้กับศูนย์ 'ช่องว่าง' มีขนาดเล็ก เมื่อคุณห่างออกไปช่องว่างก็ใหญ่ขึ้น
ดังนั้นคำถามของฉันคือ: สำหรับ IEEE 754 float ซึ่งเป็นจำนวนเต็ม (ใกล้เคียงที่สุดเป็นศูนย์) ซึ่งไม่สามารถแสดงได้อย่างแน่นอน ตอนนี้ฉันแค่กังวลกับ 32- บิตลอยแม้ว่าฉันจะสนใจฟังคำตอบสำหรับ 64- บิตถ้ามีคนให้!
ฉันคิดว่ามันจะง่ายเหมือนการคำนวณ 2 bits_of_mantissaและการเพิ่ม 1 โดยที่bits_of_mantissaคือจำนวนบิตมาตรฐานที่เปิดเผย ฉันทำสิ่งนี้สำหรับ 32- บิตลอยบนเครื่องของฉัน (MSVC ++, Win64) และมันก็ดูเหมือนดี