फ़्लोटिंग और इन्टस को संभालने पर C ++ ट्यूटोरियल

एक दशमलव दशमलव के बिना 47 की तरह एक पूरी संख्या है। आपके पास 4.5 बच्चे या 32.9 बार लूप नहीं हो सकते। यदि आप फ्लोट का उपयोग करते हैं तो आपके पास $ 25.76 हो सकते हैं। इसलिए जब आप अपना कार्यक्रम बनाते हैं, तो आपको यह तय करना होगा कि किस प्रकार का उपयोग करना है।

यह कुछ स्क्रिप्टिंग भाषाएं क्या करती हैं? क्योंकि यह अक्षम है, तैरता अधिक स्मृति को लेने के लिए और आम तौर पर धीमी ints से कर रहे हैं। इसके अलावा, आप आसानी से दो फ़्लोट्स की तुलना यह देखने के लिए नहीं कर सकते हैं कि क्या वे समान हैं जैसे आप ints के साथ कर सकते हैं।

संख्याओं में हेरफेर करने के लिए आपको उन्हें मेमोरी में स्टोर करना होगा। क्योंकि मूल्य को आसानी से बदला जा सकता है, इसे एक चर कहा जाता है।

संकलक यह आपके प्रोग्राम को पढ़ता है और इसे मशीन कोड में परिवर्तित करता है, यह जानने की जरूरत है कि यह किस प्रकार का है, यानी यह एक इंट या फ्लोट है, इसलिए इससे पहले कि आपका प्रोग्राम एक वैरिएबल का उपयोग करे, आपको अवश्य करना चाहिए घोषित यह।

आप देखेंगे कि काउंटर चर 0 पर सेट है। यह एक वैकल्पिक आरंभीकरण है। वैरिएबल को इनिशियलाइज़ करना एक बहुत अच्छा अभ्यास है। यदि आप प्रारंभ नहीं करते हैं और फिर एक प्रारंभिक मूल्य निर्धारित किए बिना कोड में उनका उपयोग करते हैं, तो चर एक यादृच्छिक मूल्य के साथ शुरू होगा जो आपके कोड को 'ब्रेक' कर सकता है। जब प्रोग्राम लोड किया गया था, तो जो कुछ भी स्मृति में था, वह मान होगा।

instagram viewer

इंट कितनी बड़ी संख्या में स्टोर कर सकता है?. खैर, यह किस प्रकार पर निर्भर करता है सी पी यू लेकिन इसे आम तौर पर 32 बिट्स के रूप में स्वीकार किया जाता है। क्योंकि यह लगभग नकारात्मक मानों को सकारात्मक के रूप में पकड़ सकता है, मूल्यों की सीमा +/- 2 है-32 2 से32 या -2,147,483,648 से +2,147,483,647।

यह एक हस्ताक्षरित इंट के लिए है, लेकिन एक भी है अहस्ताक्षरित int जो शून्य या धनात्मक हो। इसकी रेंज 0 से 4,294,967,295 है। बस याद रखना - अहस्ताक्षरित ints को उनके सामने एक संकेत (जैसे + या -1) की आवश्यकता नहीं है क्योंकि वे हमेशा सकारात्मक या 0 होते हैं।

एक छोटा int प्रकार है, संयोग से लघु int कहा जाता है जो 16 बिट्स (2 बाइट्स) का उपयोग करता है। यह संख्या -32768 से +32767 तक है। यदि आप बड़ी संख्या में किलों का उपयोग करते हैं, तो आप संभवत: छोटे किलों का उपयोग करके स्मृति को बचा सकते हैं। आधा आकार होने के बावजूद यह कोई तेज नहीं होगा। 32 बिट सीपीयू एक बार में 4 बाइट्स के ब्लॉक में मेमोरी से वैल्यू लाते हैं। अर्थात। 32 बिट्स (इसलिए नाम- 32 बिट सीपीयू!)। इसलिए 16 बिट्स लाने के लिए अभी भी 32 बिट्स लाने की आवश्यकता है।

वहाँ एक लंबी 64 बिट कहा जाता है लम्बा लम्बा सी। में। उस प्रकार का समर्थन नहीं करते हुए कुछ C ++ कंपाइलर सीधे एक वैकल्पिक नाम का उपयोग करते हैं- उदा। बोरलैंड और माइक्रोसॉफ्ट दोनों उपयोग करते हैं _int64. इसमें -9223372036854775807 से 9223372036854775807 (हस्ताक्षरित) और 0 से 18446744073709551615 (अहस्ताक्षरित) की रेंज है।

जब तक आप बहुत बड़ी या छोटी संख्या के साथ वैज्ञानिक प्रोग्रामिंग नहीं कर रहे हैं, आप केवल अधिक सटीकता के लिए डबल्स का उपयोग करेंगे। फ्लोट्स सटीकता के 6 अंकों के लिए अच्छे हैं लेकिन युगल 15 प्रदान करते हैं।

संख्या 567.8976523 पर विचार करें। यह एक वैध फ्लोट मूल्य है। लेकिन अगर हम इसे इस कोड के साथ प्रिंट करते हैं तो आप सटीक दिखने में कमी देख सकते हैं। संख्या में 10 अंक हैं, लेकिन एक फ्लोट चर में केवल छह अंकों की सटीकता के साथ संग्रहीत किया जा रहा है।

देख इनपुट और आउटपुट के बारे में कैसे काम करता है, और कैसे परिशुद्धता का उपयोग करने के बारे में जानकारी के लिए। यह उदाहरण आउटपुट परिशुद्धता को 8 अंकों में सेट करता है। दुर्भाग्य से फ्लोट केवल 6 पकड़ सकते हैं और कुछ संकलक एक डबल को फ्लोट में परिवर्तित करने के बारे में चेतावनी जारी करेंगे। जब चलाते हैं, तो यह प्रिंट निकलता है 567.89764

यदि आप परिशुद्धता को 15 में बदलते हैं, तो यह 567.897644042969 के रूप में प्रिंट करता है। काफी फर्क! अब दशमलव बिंदु दो को बाईं ओर ले जाएँ, ताकि मान 5.678976523 हो और प्रोग्राम को फिर से चलाएँ। इस बार यह 5.67897653579712 पर आउटपुट करता है। यह अधिक सटीक है लेकिन फिर भी अलग है।

यदि आप मान के प्रकार को दोगुना और सटीकता को 10 तक बदलते हैं, तो यह मान को ठीक उसी प्रकार प्रिंट करेगा जैसा परिभाषित किया गया है। एक सामान्य नियम के रूप में, फ्लोट्स छोटे, गैर पूर्णांक संख्याओं के लिए आसान होते हैं, लेकिन 6 अंकों से अधिक के साथ, आपको डबल्स का उपयोग करना होगा।

यदि आप जोड़, घटाव आदि नहीं कर सकते हैं तो कंप्यूटर सॉफ्टवेयर लिखना ज्यादा उपयोग नहीं होगा। यहाँ उदाहरण 2 है।

इसके अलावा, आप घटाव, गुणा और भाग कर सकते हैं। बस + जोड़ के लिए, - घटाव के लिए, * गुणा और / विभाजन के लिए उपयोग करें।

फ़्लोट्स के साथ, आपके पास इस बात पर कोई नियंत्रण नहीं है कि कितने दशमलव अंक प्रदर्शित किए जाते हैं जब तक कि आप पहले दिखाए गए अनुसार सटीक सेट नहीं करते हैं।

अब चौड़ाई, संरेखण, दशमलव स्थानों की संख्या और संकेत इसके द्वारा निर्धारित किए जा सकते हैं अदालत वस्तु और iomanip फ़ाइल कार्य शामिल हैं।

हजारों विभाजक थोड़े अधिक जटिल हैं। वे एक पीसी के लोकेल से सेट होते हैं। एक लोकेल में आपके देश के लिए प्रासंगिक जानकारी होती है- जैसे मुद्रा प्रतीक और दशमलव बिंदु और हजारों विभाजक। यूके और यूएसए में, 100.98 संख्या एक दशमलव बिंदु का उपयोग करती है। दशमलव बिंदु के रूप में जबकि कुछ यूरोपीय देशों में यह एक अल्पविराम है इसलिए € 5,70 का मतलब 5 यूरो और 70 सेंट की कीमत है।

एक वस्तु बनाता है mpunct जो एक संदर्भ है moneypunct टेम्पलेट वर्ग। इसमें निर्दिष्ट स्थान के बारे में जानकारी है - हमारे मामले में, thousands_sep () विधि हजारों विभाजक के लिए उपयोग किए जाने वाले चरित्र को वापस करती है।

ध्यान दें विभिन्न संकलक के बीच विसंगतियां प्रतीत होती हैं कि कैसे cout.imbue बर्ताव करती है। विजुअल C ++ 2005 एक्सप्रेस संस्करण के तहत, इसमें विभाजक शामिल थे। लेकिन Microsoft Visual C ++ 6.0 के साथ समान कोड नहीं था!

यदि आप इन दोनों में से किसी भी एक स्वरूपण मोड का उपयोग करते हैं cout.setf फिर परिशुद्धता () दशमलव बिंदु (अंकों की समग्र संख्या नहीं) के बाद दशमलव स्थानों की संख्या निर्धारित करता है, लेकिन आप हजारों स्वरूपण खो देते हैं। इसके अलावा शून्य को पीछे छोड़ना (जैसा कि सक्षम किया गया था) ios_base:: शो-पॉइंट ) जरूरत के बिना स्वचालित रूप से सक्षम हो जाते हैं showpoint.

आपको 11.0909090909 के मान की अपेक्षा होगी। वास्तव में, मान 11 है। ऐसा क्यों है? क्यों कि अभिव्यक्ति दाईं ओर (a के रूप में जाना जाता है) rvalue) पूर्णांक / पूर्णांक है। तो यह पूर्णांक अंकगणित का उपयोग करता है जो अंश को दूर फेंकता है और 11 से f को असाइन करता है। इसे बदलना

C में, ऐसा कोई प्रकार नहीं है bool. सी में भाव एक शून्य जा रहा है झूठी या एक गैर-शून्य सही किया जा रहा है पर आधारित थे। C ++ प्रकार bool मान ले जा सकते हैं सच या असत्य. ये मान अभी भी 0 और 1 के बराबर हैं। संकलक में कहीं यह एक होगा

या कम से कम यह उस तरह से काम करता है! नीचे की दो पंक्तियों को कास्टिंग के बिना मान्य किया गया है, इसलिए पर्दे के पीछे, बूल्स को स्पष्ट रूप से किलों में बदल दिया जाता है और यहां तक ​​कि इसे बढ़ाया या घटाया भी जा सकता है, हालांकि यह बहुत बुरा अभ्यास है।

अगर बुरा वैरिएबल नॉन-जीरो है, लेकिन अगर यह खराब कोड है तो भी इसे करना होगा और इससे बचना चाहिए। अच्छी प्रथा उनका उपयोग करना है जैसा कि उनका इरादा है। अगर (v) मान्य C ++ है, लेकिन मैं अधिक स्पष्ट पसंद करता हूं अगर (v! = 0). हालांकि, यह स्वाद का मामला है, नहीं अवश्य करो निर्देश।

संकलक के लिए यह बेहतर है कि वह रनटाइम पर उपयोगकर्ता की तुलना में संकलन समय पर त्रुटियों को पकड़ सके

instagram story viewer