यह "गलत" उत्तर दे रहा है क्योंकि सभी वास्तविक मूल्य फ़्लोट (या उस मामले के लिए युगल) द्वारा प्रतिनिधित्व योग्य नहीं हैं। आपको जो मिल जाएगा वह अंतर्निहित एन्कोडिंग के आधार पर अनुमान है।
आदेश भी 1.0x10 -100 और 1.1x10 -100 (वास्तव में एक मामूली रेंज) के बीच, हर वास्तविक मूल्य का प्रतिनिधित्व करने के लिए, आप अभी भी बिट्स की एक अनंत संख्या की आवश्यकता है।
सिंगल-प्रेसिजन आईईईई 754 मानों में केवल 32 बिट उपलब्ध हैं (जिनमें से कुछ को एक्सपोनेंट और नाएन/इंफ प्रस्तुतियों जैसे अन्य चीजों के लिए काम किया जाता है) और इसलिए आपको अनंत सटीकता नहीं दे सकती है। उनके पास वास्तव में 23 बिट्स उपलब्ध हैं जो लगभग 2 (एक अतिरिक्त अंतर्निहित बिट) है या केवल 7 दशमलव अंक (लॉग (2) लगभग सटीक 7.2 है।
मैं उद्धरणों में "गलत" शब्द संलग्न करता हूं क्योंकि यह वास्तव में गलत नहीं है। कंप्यूटर क्या संख्याओं का प्रतिनिधित्व करने के बारे में आपकी समझ में गलत है (हालांकि नाराज मत हो, आप इस गलतफहमी में अकेले नहीं हैं)।
http://www.h-schmidt.net/FloatApplet/IEEE754.html पर शीर्ष पर जाएं और कार्रवाई में इसे देखने के लिए अपना दशमलव "दशमलव प्रतिनिधित्व" बॉक्स में टाइप करें।
यदि आप अधिक सटीक संख्या चाहते हैं, तो फ्लोट्स के बजाय युगल का उपयोग करें - इन्हें मूल्यों का प्रतिनिधित्व करने के लिए उपलब्ध बिट्स की संख्या दोगुना हो गई है (मान लीजिए कि आपका सी कार्यान्वयन आईईईई 754 सिंगल और डबल परिशुद्धता डेटा प्रकारों को क्रमशः फ्लोट और डबल के लिए उपयोग कर रहा है)।
यदि आप मनमाने ढंग से परिशुद्धता चाहते हैं, तो आपको GMP जैसे "बिग्नम" लाइब्रेरी का उपयोग करना होगा, हालांकि यह देशी प्रकारों की तुलना में कुछ हद तक धीमा है, इसलिए सुनिश्चित करें कि आप व्यापार-बंद समझते हैं।
मैं इस जानता था सी # के मामले में हुआ। लेकिन सी – anonymous
सी के 'फ्लोट' के मामले में कभी नहीं पता था कि सटीक प्रकार भी तय किया गया है, इसलिए सी # में कोई अंतर नहीं है। –