जानकारी: "g" स्वरूप विनिर्देशक के printf() Clarification

रिटायर्ड KB सामग्री अस्वीकरण

यह आलेख उन उत्पादों के बारे में लिखा गया था जिनके लिए अब Microsoft समर्थन प्रदान नहीं करता है . इसलिए, यह आलेख "जैसा है" वैसा ही ऑफ़र किया गया है और अब इसका अद्यतन नहीं किया जाएगा.

सारांश


Microsoft C, printf() स्वरूप विनिर्देशक "g" से परिणाम आउटपुट स्वरूप बिल्कुल नहीं स्वरूप विनिर्देशक "e" या "f" से परिणाम आउटपुट स्वरूप से मेल खाती है। दस्तावेज़ कहता है "f" या "e" स्वरूप, "g" का उपयोग करेगा जो भी अधिक कॉम्पैक्ट है। यह समग्र स्वरूप सेन्स में सत्य है, लेकिन कुछ अंतर हैं।


शुद्धता मान को "f" स्वरूप में "g" स्वरूप से भिन्न तरीके से समझाया गया है। दस्तावेज़ इस अंतर का वर्णन करता है। "F" के लिए शुद्धता दशमलव बिंदु के बाद अंकों की संख्या को निर्दिष्ट करता है। शुद्धता के लिए "g" मुद्रित सार्थक अंकों की अधिकतम संख्या निर्दिष्ट करता है। निम्न उदाहरण प्रदर्शित करता है कि अंतर सारांश में वर्णन किया गया:

नमूना कोड

#include <stdio.h>
void main (void)
{
double x = 2.0/3.0; /* 0.666... */
double y;

y = 6.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 66.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 666.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 6666.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 66666.0 + x;
printf ("%.4g\n", y); /* switches to "e" notation here */
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);
}
ऊपर दिए प्रोग्राम के परिणाम नीचे दिखाए गए के रूप में सही हैं:

6.667
6.6667
6.6667e+000

66.67
66.6667
6.6667e+001

666.7
666.6667
6.6667e+002

6667
6666.6667
6.6667e+003

6.667e+004
66666.6667
6.6667e+004
गुण

आलेख ID: 43392 - पिछली समीक्षा: 18/01/2017 - संशोधन: 1

प्रतिक्रिया