2012-12-14 15 views
6

के साथ समस्या जब मैंने printf("%.6g\n",36.666666662); का उपयोग किया, तो मुझे आउटपुट 36.666667 की उम्मीद थी। लेकिन वास्तविक आउटपुट 36.6667% जी परिशुद्धता

मेरे द्वारा दिए गए प्रारूप में क्या गलत है? मेरा लक्ष्य 6 दशमलव अंक

उत्तर

11

यह सही व्यवहार है।

एक के लिए, ए, ई, ई, एफ और एफ विनिर्देशक: इस अंकों की संख्या दशमलव बिंदु के बाद मुद्रित करने के लिए है।

जी और जी विनिर्देशकों के लिए: यह मुद्रित होने के लिए महत्वपूर्ण अंकों की अधिकतम संख्या है।

यदि आप g के बजाय f का उपयोग करते हैं तो यह आपके काम के अनुसार काम करेगा।


उदाहरण कोड

#include <stdio.h> 

int main(void) { 
    printf("%.6g\n", 36.666666662); 
    printf("%.6f\n", 36.666666662); 
    return 0; 
} 

परिणाम

36.6667 
36.666667 

ऑनलाइन काम कर यह देखें: ideone

+0

cplusplus.com "दस्तावेज़ीकरण" नहीं है और वास्तव में कई इंटरफेस के बारे में गलत जानकारी है; एक त्वरित उदाहरण जो दिमाग में आता है, जब तक कि वे इसे ठीक नहीं कर लेते हैं, 'स्कैनएफ' का वापसी मूल्य है। यदि आप "दस्तावेज़" को एक लिंक बनाने जा रहे हैं, तो इसे पी मानक में सी मानक या समकक्ष भाषा को इंगित करना चाहिए (जो लिंक करना आसान है)। –

+0

@ आर ..: अच्छा बिंदु, मैंने लिंक हटा दिया। टिप्पणी के लिए धन्यवाद। –

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