मैं एक प्रोग्राम लिख रहा हूं जो किसी अन्य प्रोग्राम के अंदर फ़्लोटिंग पॉइंट अक्षर का उपयोग करता है।प्रिंटिंग फ्लोट, सटीक संरक्षण
मूल फ्लोट की परिशुद्धता को संरक्षित करने के लिए मुझे कितने अंक प्रिंट करने की आवश्यकता है?
चूंकि एक फ्लोट में 24 * (log(2)/log(10)) = 7.2247199
सटीक दशमलव अंक हैं, तो मेरा प्रारंभिक विचार यह था कि प्रिंटिंग 8 अंक पर्याप्त होना चाहिए। लेकिन अगर मैं दुर्भाग्यपूर्ण हूं, तो 0.2247199
बाईं ओर और 7 महत्वपूर्ण अंकों के दाईं ओर वितरित हो जाते हैं, इसलिए मुझे शायद 9 दशमलव अंक प्रिंट करना चाहिए।
क्या मेरा विश्लेषण सही है? क्या 9 दशमलव अंक सभी मामलों के लिए पर्याप्त हैं? printf("%.9g", x);
की तरह?
क्या कोई मानक फ़ंक्शन है जो उस मान के लिए आवश्यक दशमलव अंकों की न्यूनतम संख्या के साथ एक स्ट्रैट में एक फ्लोट को परिवर्तित करता है, जहां 7 या 8 पर्याप्त हैं, इसलिए मैं अनावश्यक अंकों को मुद्रित नहीं करता हूं?
नोट: मैं हेक्साडेसिमल फ़्लोटिंग पॉइंट अक्षर का उपयोग नहीं कर सकता, क्योंकि मानक सी ++ उनका समर्थन नहीं करता है।
उपयोग 1000 अंक और अनुगामी शून्य क्लिप! ;) –
क्योंकि आप बिना किसी त्रुटि के बाइनरी-आधारित फ्लोट को दशमलव अंश में परिवर्तित नहीं कर सकते हैं, मैं बस बाइनरी प्रतिनिधित्व (या मंटिसा + एक्सपोनेंट अलग से) को डंप करने का प्रस्ताव दूंगा। – Vlad
@Vlad आप नहीं कर सकते? सभी बाइनरी अंश एक सीमित दशमलव के रूप में प्रतिनिधित्व योग्य नहीं हैं? –