>> डेविड मालन: चलो अब अपने दिमाग उड़ा दें.
यह विभाजित असली दुनिया 1 में पता चला है 10 से 1/10, या 0.1 वास्तव में है.
लेकिन कंप्यूटर में केवल एक परिमित है कि बिट्स की संख्या के साथ जो करने के लिए
संख्या का प्रतिनिधित्व करते हैं, आप हमेशा नहीं कर सकते साथ 1/10 जैसे संख्या का प्रतिनिधित्व करते हैं
सही सटीक.
दूसरे शब्दों में, कंप्यूटर कभी कभी निर्णय कॉल और नहीं बनाने के लिए
जरूरी संख्या आप का प्रतिनिधित्व के रूप में ठीक आप का इरादा के रूप में चाहते हैं.
>> उदाहरण के लिए, मैं में वापस जाने के लिए लगता है इस कार्यक्रम के लिए और 0.1 बदलने,
ओह, 0.28, जिससे यह दर्शाता है कि मैं करने के लिए printf के लिए printf चाहते हैं
परिशुद्धता के 28 स्थानों पर.
चलो अब बचाने के लिए और कार्यक्रम संकलन करते हैं, बनाने floats2 के साथ इस बार.
डॉट स्लेश floats2 के साथ चला रहे हैं.
और, प्रिय भगवान, मैं 0.1 नहीं देख इस समय, लेकिन सुंदर है जो 0.10000000,
अच्छा अब तक.
लेकिन फिर, 14901161193847656250.
>> खैर, क्या चल रहा है?
खैर, यह एक नाव है कि पता चला है आम तौर पर एक कंप्यूटर के अंदर संग्रहित
32 बिट के साथ.
32 स्पष्ट रूप से एक निश्चित संख्या है, जो आप ही प्रतिनिधित्व कर सकते हैं कि तात्पर्य
32 बिट एक सीमित संख्या के साथ की बात मान चल.
दुर्भाग्य से, इसका मतलब है कि कंप्यूटर सभी संभव का प्रतिनिधित्व नहीं कर सकते
चल बिन्दु संख्या, या वास्तविक संख्या, दुनिया में मौजूद हैं,
यह केवल इसलिए कई टुकड़े है क्योंकि.
>> और तो कंप्यूटर जाहिरा तौर पर क्या है इस मामले में किया 1/10 के लिए प्रतिनिधित्व कर रहा है
निकटतम संभव फ्लोटिंग बिंदु मान सकते हैं कि यह.
लेकिन हमें देखो, हम यहाँ है, के रूप में 28 को दशमलव स्थानों, हम देखते हैं कि शुरू
अस्पष्टता.
तो इस के साथ एक समस्या है कोई सही समाधान.
हम बजाय एक नाव के एक डबल का उपयोग कर सकते हैं के रूप में 64 बिट का उपयोग करने के लिए जाता है, जो
32 के खिलाफ.
लेकिन हां, 64, भी सीमित है इसलिए इस समस्या का होगा
भी डबल्स के साथ रहते हैं.