दशमलव बिंदु स्पष्ट रूप से कहीं भी संग्रहीत नहीं है; यह एक प्रदर्शन मुद्दा है।
निम्नलिखित स्पष्टीकरण एक सरलीकरण है; मैं बहुत सारे महत्वपूर्ण विवरण छोड़ रहा हूं और मेरे उदाहरण किसी भी वास्तविक दुनिया के मंच का प्रतिनिधित्व करने के लिए नहीं हैं। यह आपको एक फ्लेवर देना चाहिए कि फ़्लोटिंग-पॉइंट वैल्यूज़ को स्मृति और उनसे जुड़े मुद्दों में कैसे दर्शाया जाता है, लेकिन आप अधिक आधिकारिक स्रोतों को खोजना चाहेंगे जैसे फ्लोटिंग-पॉइंट अंकगणित के बारे में हर कंप्यूटर वैज्ञानिक को क्या पता होना चाहिए ।
आधार के बजाय बेस 2 का उपयोग करके, वैज्ञानिक संकेतन के एक प्रकार में एक फ्लोटिंग-पॉइंट वैल्यू का प्रतिनिधित्व करके शुरू करें। उदाहरण के लिए, 3.14159 के रूप में मान का प्रतिनिधित्व किया जा सकता है
0.7853975 * 2 2
0.7853975 का महत्व है , उर्फ मंटिसा ; यह महत्वपूर्ण अंकों वाली संख्या का हिस्सा है। इस मान को बेस 2 से गुणा करके 2 की शक्ति से 3.14159 प्राप्त किया जाता है।
फ़्लोटिंग-पॉइंट संख्याएँ महत्व और प्रतिपादक (एक संकेत बिट के साथ) को संग्रहीत करके एन्कोडेड हैं।
एक विशिष्ट 32-बिट लेआउट कुछ इस तरह दिखता है:
3 32222222 22211111111110000000000
1 09876543 21098765432109876543210
+-+--------+-----------------------+
| | | |
+-+--------+-----------------------+
^ ^ ^
| | |
| | +-- significand
| |
| +------------------- exponent
|
+------------------------ sign bit
हस्ताक्षरित पूर्णांक प्रकारों की तरह, उच्च-क्रम बिट संकेत इंगित करता है; 0 एक सकारात्मक मूल्य इंगित करता है, 1 नकारात्मक इंगित करता है।
अगले 8 बिट्स का उपयोग घातांक के लिए किया जाता है। एक्सपोजर सकारात्मक या नकारात्मक हो सकता है, लेकिन एक और साइन बिट को आरक्षित करने के बजाय, वे ऐसे एन्कोड किए जाते हैं जैसे कि 10000000 0 का प्रतिनिधित्व करता है, इसलिए 00000000 -128 का प्रतिनिधित्व करता है और 11111111 127 का प्रतिनिधित्व करता है।
शेष बिट्स का उपयोग महत्व के लिए किया जाता है। प्रत्येक बिट बाईं ओर से 2 गिनती की नकारात्मक शक्ति का प्रतिनिधित्व करता है, इसलिए:
01101 = 0 * 2 -1 + 1 * 2 -2 + 1 * 2 -3 + 0 * 2 -4 + 1 * 2 -5
= 0.25 + 0.125 + 0.03125
= 0.40625
कुछ प्लेटफ़ॉर्म मान लेते हैं कि "सदैव 1 में छिपा" अग्रणी बिट है जो हमेशा 1 पर सेट होता है, इसलिए महत्व में मान हमेशा [0.5, 1) के बीच होता है। यह इन प्लेटफार्मों को थोड़ा अधिक सटीक (उस पर अधिक) के साथ मूल्यों को संग्रहीत करने की अनुमति देता है। मेरा उदाहरण ऐसा नहीं करता है।
तो 3.14159 के हमारे मूल्य को कुछ इस तरह दर्शाया जाएगा
0 10000010 11001001000011111100111
^ ^ ^
| | |
| | + --- महत्व = 0.7853975 ...
| |
| + ------------------- प्रतिपादक = २ (१३० - १२-)
|
+ ------------------------- संकेत = 0 (सकारात्मक)
मान = -1 (संकेत) * 2 (घातांक) * (महत्व)
मान = -1 0 * 2 2 * 0.7853975 ...
मान = 3.14159 ...
अब, यदि आप महत्व में सभी बिट्स जोड़ते हैं, तो आप देखेंगे कि वे कुल 0.7853975 नहीं हैं; वे वास्तव में 0.78539747 पर निकलते हैं। मूल्य को संग्रहीत करने के लिए काफी पर्याप्त बिट्स नहीं हैं ; हम केवल एक अनुमान स्टोर कर सकते हैं। महत्व में बिट्स की संख्या सटीक , या कितने महत्वपूर्ण अंक आप स्टोर कर सकते हैं निर्धारित करता है । 23 बिट्स हमें सटीकता के लगभग 6 दशमलव अंक प्रदान करते हैं। 64-बिट फ़्लोटिंग पॉइंट प्रकार सटीकता के 12 से 15 अंकों को देने के लिए पर्याप्त बिट्स प्रदान करते हैं। लेकिन ध्यान रखें कि ऐसे मूल्य हैं जिनका प्रतिनिधित्व नहीं किया जा सकता है, चाहे वे किसी भी तरह से क्यों न होंकई बिट्स आप उपयोग करते हैं। जिस प्रकार 1/3 जैसे मानों को दशमलव अंकों की एक परिमित संख्या में नहीं दर्शाया जा सकता है, उसी तरह 1/10 के मानों को परिमित संख्या में नहीं दर्शाया जा सकता है। चूंकि मान अनुमानित हैं, इसलिए उनके साथ गणना भी अनुमानित है, और गोलाई की त्रुटियां जमा होती हैं।
घातांक में बिट्स की संख्या सीमा निर्धारित करती है (न्यूनतम और अधिकतम मूल्य जो आप प्रतिनिधित्व कर सकते हैं)। लेकिन जैसे-जैसे आप अपने न्यूनतम और अधिकतम मूल्यों की ओर बढ़ते हैं, प्रतिनिधित्व योग्य मूल्यों के बीच अंतर का आकार बढ़ता जाता है। यही है, अगर आप 0.785397 और 0.785398 के बीच के मूल्यों का प्रतिनिधित्व नहीं कर सकते हैं, तो आप 7.85397 और 7.85398 के बीच या तो मूल्यों का प्रतिनिधित्व नहीं कर सकते हैं, या 78.5397 और 78.5398 के बीच या 785397.0 और 785398.0 के बीच के मूल्यों का प्रतिनिधित्व नहीं कर सकते। बहुत बड़ी संख्याओं द्वारा बहुत बड़ी (परिमाण के संदर्भ में) गुणा करते समय सावधान रहें।