2013-08-23 12 views
7

मैं निम्नलिखित है कार्यक्रम:एल सी सी printf चल बिन्दु

#include <stdio.h> 

int main(int args, char *argv[]) { 
    printf("%f\n", 0.99999); 
    printf("%e\n", 0.99999); 
} 

परिणाम है:

0.009990 
9.999900e-001 

क्यों पहले नंबर गलत है? मैं विंडोज एक्सपी, कंपाइलर का उपयोग करता हूं "Logiciels Informatique lcc-win32 संस्करण 3.8। संकलन दिनांक: 30 नवंबर 2012 19:38:03"।

+0

क्या आप [lcc] (http://en.wikipedia.org/wiki/LCC_ (कंपाइलर)) या इसके व्युत्पन्न [lcc-win] का उपयोग कर रहे हैं (http://www.cs.virginia.edu/~lcc -win32 /)? यदि आप #in30e जोड़ते हैं तो क्या आपको वही समस्या है? (यह केवल एक सटीक समस्या नहीं है; आउटपुट 100 के कारक से बंद है।) –

+0

जब मैं printf ("% e \ n", 0.99999) का उपयोग करता हूं; जवाब सही है 9.9 999 00e-001 समस्या केवल विशिष्ट संख्याओं के लिए होती है। – user2712052

+0

मैं एलसीसी-जीत का उपयोग करता हूं, और हाँ शामिल है। – user2712052

उत्तर

2

कार्यक्रम सही है, और इसके उत्पादन होना चाहिए कि:

0.999990 
9.999900e-01 

या कुछ बहुत के समान।

(आप args या argv, उपयोग न करें और main के पहले पैरामीटर के लिए हमेशा की तरह नाम argc बजाय args, है, लेकिन उन में से कोई भी एक समस्या यह है कि अपने कार्यक्रम के व्यवहार को प्रभावित करना चाहिए।)

यह ऐसा लगता है कि आपको अपने कार्यान्वयन में एक बग मिला है, शायद संकलक के बजाए रनटाइम लाइब्रेरी में। मेरी संक्षिप्त Google खोजों ने इस विशेष बग का संदर्भ नहीं दिया है (वास्तव में, शीर्ष हिट यह प्रश्न था)।

मैं एलसीसी-जीत के रखरखाव से संपर्क करने का सुझाव देता हूं; संपर्क जानकारी web site पर है। एक संक्षिप्त विवरण और इस प्रश्न के लिंक को कम से कम शुरू करने के लिए पर्याप्त जानकारी प्रदान करनी चाहिए।

संबंधित मुद्दे