दिए गए कार्यक्रम में मुझे प्रत्येक के लिए अलग-अलग परिणाम क्यों मिले printf?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
और यह निम्न आउटपुट दिखाता है:
44000002048.000000
44000000000.000000
doubleके लिए floatसी भाषा में होता है? या क्या आप जानना चाहते हैं कि रूपांतरण से क्या परिणाम निकलते हैं, यानी रूपांतरण के क्या प्रभाव होते हैं? या कुछ और?
Cहम इस्तेमाल किया printf("%f",x)एक के लिए floatऔर printf("%lf",x)एक के लिए double। चीजें कब बदलीं? और एक (एकल) को स्पष्ट रूप से कैसे प्रिंट किया जाएगा float- printf("%hf",x)??
%lfमें एड्रियन वही चीज़ है जो %f। एक floatएक चर तर्क में एक में बदल जाता है doubleसंकलक द्वारा, एक जैसे shortएक में परिवर्तित हो जाती int।
4.4e10एकdoubleस्थिरांक है जिसेfloatप्रारंभ में परिवर्तित कियाcजाता है लेकिनdoubleजब इसे पारित किया जाता हैprintf। हालाँकि, आप यह भी जानना पसंद कर सकते हैं कि एकfप्रत्यय जोड़ने से यहfloatस्थिर हो जाता है: मुद्रण4.4e10fउसी मूल्य को दिखाएगा जो कि प्रारंभcकरने से उत्पन्न होता है4.4e10f। भेदfloatसे स्थिरांकdoubleस्थिरांक फ्लोटिंग प्वाइंट गणित के साथ गुणवत्ता काम कर रही करने के लिए महत्वपूर्ण हो सकता है।