में फ़्लोटिंग पॉइंट स्थिरांक का कॉम्पैक्ट लापरवाही प्रतिनिधित्व मेरे पास सी ++ में लिखा गया एक प्रोग्राम है जो गणितीय गणनाओं के लिए सी स्रोत कोड उत्पन्न कर रहा है। मैंने देखा है कि स्थिरांक जेनरेट कोड में बहुत अधिक जगह लेते हैं और अधिक कॉम्पैक्ट प्रतिनिधित्व की तलाश में हैं।सी/सी ++
स्थिरांक उत्पन्न करने के लिए, मैं अब उपयोग कर रहा हूँ:
double v = ...
cfile << std::scientific << std::setprecision(std::numeric_limits<double>::digits10 + 1) << v;
मैं बहुत यकीन है कि यह एक दोषरहित प्रतिनिधित्व है कर रहा हूँ, लेकिन यह भी बहुत फूला हुआ है। उदाहरण के लिए शून्य और एक को 0.0000000000000000e + 00 और 1.0000000000000000e + 00 जैसे कुछ के रूप में दर्शाया जाएगा। और "0." या "1." उतनी ही जानकारी लेती है।
क्या कॉम्पैंट को अधिक कॉम्पैक्ट में फ़ाइल करने के लिए प्रिंट करने का कोई तरीका है, लेकिन अभी भी लापरवाह तरीका है? इसे मानव पाठक के लिए अच्छा दिखने की आवश्यकता नहीं है, केवल सादे सी कोड में मौजूद होने पर संकलित करें (यदि सी 99, तो मैं यह भी पसंद करूंगा कि यह वैध सी ++ भी है)। पोर्टेबल होने पर हेक्साडेसिमल ठीक हो सकता है।
संपादित करें: कोड स्निपेट में std::fixed
हटाया गया।
यह थोड़ी देर हो गया है, लेकिन [यहां] देखें (http://en.wikipedia.org/wiki/Huffman_coding), हफमैन-एन्कोडिंग आपको अनुकूल कर सकती है। –
शायद मुझे गलत समझा, लेकिन पिछला शून्य हटाने का समाधान समाधान नहीं होगा? – jogojapan
संबंधित: http://stackoverflow.com/questions/4738768/printing-double-without-losing-precision – jogojapan