की सटीकता कैसे सेट करें कोई मुझे बता सकता है कि सी फ़ंक्शन के साथ फ़्लोट की सटीकता कैसे चुनें?फ्लोट
उदाहरण:
theFatFunction(0.666666666, 3)
वापसी: 0,667
theFatFunction(0.111111111, 3)
रिटर्न: 0,111
की सटीकता कैसे सेट करें कोई मुझे बता सकता है कि सी फ़ंक्शन के साथ फ़्लोट की सटीकता कैसे चुनें?फ्लोट
उदाहरण:
theFatFunction(0.666666666, 3)
वापसी: 0,667
theFatFunction(0.111111111, 3)
रिटर्न: 0,111
आप ऐसा नहीं कर सकते हैं, क्योंकि सटीकता डेटा प्रकार (यानी float
या double
या long double
) द्वारा निर्धारित की जाती है। यदि आप प्रिंटिंग उद्देश्यों के लिए इसे गोल करना चाहते हैं, तो आप उचित प्रारूप विनिर्देशों का उपयोग printf()
, यानी printf("%0.3f\n", 0.666666666)
में कर सकते हैं।
आप नहीं कर सकते। प्रेसिजन पूरी तरह से डेटा प्रकार पर निर्भर करता है। आपको float
और double
मिल गया है और यही वह है।
फ़्लोट्स में स्थिर, निश्चित सटीकता होती है। आप इसे बदल नहीं सकते आप कभी-कभी क्या कर सकते हैं, संख्या के चारों ओर है।
this page देखें, और 10 की शक्तियों से स्वयं को स्केल करने पर विचार करें। ध्यान दें कि सभी संख्याएं फ्लोट के रूप में बिल्कुल प्रतिनिधित्व योग्य नहीं हैं।
आप फर्श (x * 100) /100.0 कर सकते हैं –
अधिकांश सिस्टम आईईईई -754 फ्लोटिंग पॉइंट मानक का पालन करते हैं जो कई फ़्लोटिंग पॉइंट प्रकारों को परिभाषित करता है।
इन सिस्टमों पर, आमतौर पर float
आईईईई -754 binary32
एकल परिशुद्धता प्रकार है: इसमें 24-बिट सटीकता है। double
binary64
डबल परिशुद्धता प्रकार है; इसमें 53-बिट सटीकता है। बिट संख्याओं में सटीकता आईईईई -754 मानक द्वारा परिभाषित की गई है और इसे बदला नहीं जा सकता है।
जब आप fprintf
परिवार (उदा।, printf
) के कार्यों का उपयोग करके फ़्लोटिंग पॉइंट प्रकारों के मान मुद्रित करते हैं, तो सटीकता को अधिकतम अंकों की अधिकतम संख्या के रूप में परिभाषित किया जाता है और डिफ़ॉल्ट रूप से 6 अंकों पर सेट होता है। आप डिफ़ॉल्ट विनिर्देश को .
के साथ रूपांतरण विनिर्देश में दशमलव संख्या के बाद बदल सकते हैं।
printf("%.10f\n", 4.0 * atan(1.0)); // prints 3.1415926536
जबकि
printf("%f\n", 4.0 * atan(1.0)); // prints 3.141593
प्रेसिजन डेटा प्रकार (अर्थात नाव या डबल या लंबी डबल) से निर्धारित होता है: उदाहरण के लिए।
आप मुद्रण उद्देश्यों के लिए यह दौर चाहते हैं, आप printf में उचित प्रारूप विनिर्देशक(), यानी
printf("%0.3f\n", 0.666666666) //will print 0.667 in c
अब उपयोग कर सकते हैं अगर आप प्रयोजनों के लिए आपको सबसे पहले गुणा करने के लिए है की गणना के लिए यह पूर्णांक बनाना चाहते हैं अंक (http [सी में 2 दशमलव स्थानों के लिए गोलाई संख्या] तो 10
float f=0.66666;
f *= 1000; // 666.660
int i = (int)f; // 666
i = 2*i; // 1332
f = i; // 1332
f /= 1000; // 1.332
printf("%f",f); //1.332000
के संभावित डुप्लिकेट का एक ही शक्ति से फ्लोट करने के लिए int करने के लिए, गणना करने के समान किरदार और उसके बाद फिर समान किरदार और विभाजन की 10^संख्या से फ्लोट: //stackoverflow.com/questions/1343890/rounding-number-to-2-decimal-places-in-c) –