स्पष्टता के लिए, यदि मैं IEE 754 फ़्लोट्स को लागू करने वाली भाषा का उपयोग कर रहा हूं और मैं घोषणा करता हूं:
float f0 = 0.f;
float f1 = 1.f;
... और फिर उन्हें वापस प्रिंट करें, मुझे 0.0000 और 1.0000 मिलेंगे - बिल्कुल।
लेकिन IEEE 754 वास्तविक संख्या के साथ सभी नंबरों का प्रतिनिधित्व करने में सक्षम नहीं है। शून्य के करीब, 'अंतराल' छोटे हैं; जैसे-जैसे आप आगे बढ़ते जाते हैं, अंतराल और बड़ा होता जाता है।
तो, मेरा सवाल यह है: एक IEEE 754 फ्लोट के लिए, जो कि पहले (निकटतम से शून्य) पूर्णांक है जो वास्तव में प्रतिनिधित्व नहीं किया जा सकता है? मैं केवल 32-बिट फ़्लोट्स के लिए वास्तव में चिंतित हूं, हालांकि मुझे 64-बिट के लिए उत्तर सुनने में दिलचस्पी होगी अगर कोई इसे देता है!
मैंने सोचा कि यह 2 बिट्स_ऑफ_मैंटिसा की गणना करने और 1 को जोड़ने के रूप में सरल होगा , जहां बिट्स_ऑफ_मैंटिसा मानक बिट्स को कितने बिट्स है। मैंने अपनी मशीन (MSVC ++, Win64) पर 32-बिट फ़्लोट्स के लिए ऐसा किया था, और यह ठीक लग रहा था, हालांकि।