मेरे पास कुछ (विरासत एम्बेडेड सी) कोड है जो कुछ sprintf
कॉल के माध्यम से एक .csv फ़ाइल उत्पन्न करता है। कभी-कभी मैं 1.#QO
के मान देखता हूं। मैंने उन मूल्यों को उन परिस्थितियों के साथ पुन: पेश करने का प्रयास किया है जो नकारात्मक अनंतता, सकारात्मक अनंतता और NaN देना चाहिए लेकिन उनमें से कोई भी मुझे जादुई 1.#QO
परिणाम देने के लिए प्रतीत होता है। तो यह क्या है जो उस मूल्य का उत्पादन करता है?क्या फ्लोट वैल्यू sprintf_s() उत्पन्न करता है "1. # क्यूओ"?
... और हाँ, मुझे पता है कि गणित में कुछ गलत हो रहा है जो उस मूल्य का उत्पादन करता है, लेकिन समझने का अर्थ यह है कि डीबगिंग प्रयास में सहायता मिलेगी।
[संपादित करें 1] वास्तविक रेखा है जो रूपांतरण करता है:
sprintf_s(txt, CSV_HEADER_SIZE, "%.3f", value);
जहां:
#define CSV_HEADER_SIZE (100)
char txt[CSV_HEADER_SIZE];
मैं एमएस दृश्य स्टूडियो के साथ संकलन कर रहा हूँ 2008.
[संपादित करें 2] थोड़ा और खुदाई दिखाता है 0xFFFFFFFF
-1.#QO
देता है:
unsigned int i = 0xFFFFFFFF;
float* f = (float*)&i;
printf("%.3f", *f); // gives -1.#QO
..और विजुअल स्टूडियो डीबगर में है कि को देख -1.#QNAN00
को वह फैलता तो ऐसा लगता है कि यह शायद NaN
की एक माइक्रोसॉफ्ट विशेष प्रतिनिधित्व है?
प्रश्न में 'sprintf() 'पंक्ति क्या है? – CanSpice
क्या आप इस परिणाम को उत्पन्न करने वाले मानों में से एक की पहचान कर सकते हैं और अंतर्निहित फ्लोट डेटा को प्रारूप में कह सकते हैं, हेक्स? उदाहरण के लिए, यदि यह 4-बाइट फ्लोट है तो आप 'printf ("% X", मान) ', या 8-बाइट के लिए' printf ("% llX ", मान) करने में सक्षम हो सकते हैं ' मंच। यह जानकारी उपयोगी होगी। –
क्या आप संकलक (और, यदि लागू हो, रनटाइम) की पहचान कर सकते हैं?उस विशेष 'स्प्रिंटफ' आउटपुट मानक में पिछले मानक में नहीं था, इसलिए यह शायद बहुत कार्यान्वयन-निर्भर है। –