माइक एलन के जवाब को प्रतिबिंबित करते हुए, लेकिन कुछ अतिरिक्त संदर्भ प्रदान करने की उम्मीद है (इसे एक अलग उत्तर के बजाय टिप्पणी के रूप में छोड़ दिया होगा, लेकिन एसओ की प्रतिष्ठा सुविधा मुझे नहीं जाने देगी)।
इंटेगर्स की अधिकतम सीमा 0 से 2^एन (यदि यह एक हस्ताक्षरित पूर्णांक है) या -2^(एन -1) से 2^(एन -1) (हस्ताक्षरित पूर्णांक के लिए) के रूप में परिभाषित मानों की अधिकतम सीमा है एन अंतर्निहित कार्यान्वयन में बिट्स की संख्या है (इस मामले में एन = 32)। यदि आप एक हस्ताक्षरित मूल्य के साथ 2^31 से बड़े नंबर का प्रतिनिधित्व करना चाहते हैं, तो आप int का उपयोग नहीं कर सकते हैं। एक हस्ताक्षरित लंबा 2^63 तक काम करेगा। इससे भी बड़ा कुछ भी, एक हस्ताक्षरित फ्लोट लगभग 2^127 तक जा सकता है।
ध्यान देने योग्य एक अन्य बात यह है कि इन रिज़ॉल्यूशन के मुद्दे केवल तभी लागू होते हैं जब फ़्लोटिंग पॉइंट नंबर में संग्रहीत मान अधिकतम तक पहुंचता है। इस मामले में, घटाव ऑपरेशन वास्तविक मान में परिवर्तन का कारण बनता है जो कई पहले मान से छोटे परिमाण के आदेश हैं। एक फ्लोट 100 और 101 के बीच अंतर को गोल नहीं करेगा, लेकिन यह 10000000000000000000000000000 और 1000000000000000000000000000101 के बीच अंतर को पार कर सकता है।
समान मूल्यों के लिए जाता है। यदि आप 0.1 को पूर्णांक में डालते हैं, तो आपको बिल्कुल 0 मिलता है। इसे आम तौर पर पूर्णांक डेटा प्रकार में विफल होने पर नहीं माना जाता है।
यदि आप संख्याओं पर परिचालन कर रहे हैं जो कि आकार में भिन्नता के कई आदेश हैं, और गोल करने वाली त्रुटियों को सहन करने में भी सक्षम नहीं हैं, तो आपको डेटा संरचनाओं और एल्गोरिदम की आवश्यकता होगी जो बाइनरी डेटा प्रतिनिधित्व की अंतर्निहित सीमाओं के लिए खाते हैं। एक संभावित समाधान एक फ्लोटिंग पॉइंट एन्कोडिंग का उपयोग घातीय के कम बिट्स के साथ करना होगा, जिससे अधिकतम मूल्य सीमित हो लेकिन अधिक रिज़ॉल्यूशन प्रदान करने के लिए कम महत्वपूर्ण बिट्स हों।अधिक विस्तार के लिए, बाहर की जाँच:
कि संकलन करता है? आपको 'x2' के बाद बराबर की आवश्यकता नहीं है? – Carcigenicate
मैं इसे पुन: पेश नहीं कर सकता। मुझे इसके बजाय एक वाक्यविन्यास त्रुटि मिलती है। –
मैंने आपके द्वारा उल्लिखित स्लाइड पाई। आपके द्वारा पोस्ट किया गया कोड स्लाइड पर कोड से अलग है। स्लाइड पर कोड में वाक्यविन्यास त्रुटि नहीं है। –