आंशिक संख्याओं को संग्रहीत करने के कई तरीके हैं, और उनमें से प्रत्येक के फायदे और नुकसान हैं।
फ्लोटिंग-पॉइंट , अब तक का सबसे लोकप्रिय प्रारूप है। यह एक साइन, एक मंटिसा, और एक हस्ताक्षरित बेस -2 घातांक को पूर्णांक में एन्कोडिंग और उन्हें बिट्स के एक गुच्छा में पैक करके काम करता है। उदाहरण के लिए, आप में से एक 32-बिट अपूर्णांश हो सकता था 0.5
(के रूप में एन्कोड 0x88888888
) और एक 32-बिट पर हस्ताक्षर किए प्रतिपादक +3
( 0x00000003
) है, जो करने के लिए डिकोड हैं 4.0
(0.5 * 2 ^ 3
)। फ़्लोटिंग-पॉइंट नंबर तेज़ हैं, क्योंकि वे हार्डवेयर में कार्यान्वित किए जाते हैं, और उनका सटीक माप पूर्ण आकार के साथ होता है, यानी संख्या जितनी छोटी होगी, आपकी पूर्ण परिशुद्धता बेहतर होगी, इसलिए सापेक्ष गोलाई त्रुटि पूर्ण आकार के साथ स्थिर रहती है। फ़्लोट्स निरंतर डोमेन से लिए गए मानों के लिए उत्कृष्ट होते हैं, जैसे कि लंबाई, ध्वनि दबाव स्तर, प्रकाश स्तर, आदि, और उसके कारण, वे आमतौर पर ऑडियो और छवि प्रसंस्करण में उपयोग किए जाते हैं, साथ ही सांख्यिकीय विश्लेषण और भौतिकी सिमुलेशन भी। उनका सबसे बड़ा नकारात्मक पक्ष यह है कि वे सटीक नहीं हैं, अर्थात्, वे गोल त्रुटियों के लिए प्रवण हैं, और वे सभी दशमलव अंशों का सही प्रतिनिधित्व नहीं कर सकते हैं। सभी मुख्यधारा की प्रोग्रामिंग भाषाओं में किसी प्रकार का एक फ्लोट बिंदु होता है।
स्थिर केंद्रपर्याप्त रूप से बड़े पूर्णांकों का उपयोग करके और आंशिक रूप से उनके बिट्स के एक हिस्से को आंशिक रूप से जलाकर काम करता है। उदाहरण के लिए, एक 24.8 बिट फिक्स्ड-पॉइंट नंबर पूर्णांक भाग (साइन सहित) के लिए 24 बिट्स, और आंशिक भाग के लिए 8 बिट्स आरक्षित करता है। 8 बिट्स द्वारा उस नंबर को राइट-शिफ्ट करने से हमें पूर्णांक भाग मिलता है। फिक्स्ड-पॉइंट नंबर तब लोकप्रिय हुआ करते थे जब हार्डवेयर फ़्लोटिंग-पॉइंट इकाइयाँ उनके पूर्णांक समकक्षों की तुलना में असामान्य या कम से कम बहुत धीमी थीं। हालांकि फिक्स्ड-पॉइंट संख्या सटीकता के मामले में संभालना कुछ आसान है (यदि केवल इसलिए कि वे कारण के बारे में आसान हैं), वे हर दूसरे संबंध में बहुत अधिक तैरने से हीन हैं - उनके पास कम परिशुद्धता है, एक छोटी सी सीमा है, और क्योंकि अतिरिक्त अंतर्निहित शिफ्ट के लिए गणना को सही करने के लिए संचालन की आवश्यकता होती है, फिक्स्ड-पॉइंट गणित आज फ्लोटिंग-पॉइंट गणित की तुलना में धीमी है।
दशमलव प्रकार बहुत काम करते हैं जैसे फ़्लोट्स या फिक्स्ड-पॉइंट नंबर, लेकिन वे एक दशमलव प्रणाली मान लेते हैं, अर्थात, उनके प्रतिपादक (अंतर्निहित या स्पष्ट) पावर-ऑफ -10 को एनकोड करते हैं, न कि पावर -२ के। एक दशमलव संख्या, उदाहरण के लिए, 23456
और इसके एक घातांक को सांकेतिक शब्दों में बदलना कर सकती है -2
, और इसका विस्तार होगा234.56
। दशमलव, क्योंकि अंकगणित सीपीयू में हार्ड-वायर्ड नहीं होता है, तैरने की तुलना में धीमा होता है, लेकिन वे किसी भी चीज के लिए आदर्श होते हैं जिसमें दशमलव संख्याएं शामिल होती हैं और उन संख्याओं को सटीक होने की आवश्यकता होती है, जो अच्छी तरह से परिभाषित स्थानों में होने वाली गोलाई के साथ होती हैं - वित्तीय छूट, स्कोरबोर्ड इत्यादि, कुछ प्रोग्रामिंग भाषाओं में दशमलव प्रकार बनाए गए हैं (जैसे C #), दूसरों को उन्हें लागू करने के लिए पुस्तकालयों की आवश्यकता होती है। ध्यान दें कि जबकि दशमलव गैर-दोहराए जाने वाले दशमलव अंशों का सही प्रतिनिधित्व कर सकता है, उनकी सटीकता फ्लोटिंग-पॉइंट संख्याओं से बेहतर नहीं है; दशमलव का चयन करने का मतलब है कि आपको उन संख्याओं का सटीक निरूपण मिलता है, जिन्हें एक दशमलव प्रणाली में ठीक-ठीक दर्शाया जा सकता है (जैसे तैरने वाले बिल्कुल द्विआधारी अंश का प्रतिनिधित्व कर सकते हैं)।
परिमेय संख्या एक अंश और एक संचयक को संग्रहीत करती है, आमतौर पर कुछ प्रकार के बिग्नम पूर्णांक प्रकार (एक संख्यात्मक प्रकार जो कंप्यूटर की मेमोरी बाधाओं की अनुमति के रूप में बड़े हो सकते हैं) का उपयोग करते हैं। यह बंच से बाहर एकमात्र डेटा प्रकार है जो सटीक रूप से मॉडल संख्याओं की तरह 1/3
या 3/17
साथ ही उन पर संचालन कर सकता है - तर्कसंगत, अन्य डेटा प्रकारों के विपरीत, जैसी चीजों के लिए सही परिणाम देगा3 * 1/3
। गणित बहुत सीधा है, हालांकि एक कुशल फैक्टरिंग एल्गोरिथ्म के साथ आना चुनौतीपूर्ण है। कुछ प्रोग्रामिंग भाषाओं में तर्कसंगत प्रकार बनाए गए हैं, जैसे (कॉमन लिस्प)। परिमेय के डाउनसाइड्स में यह शामिल है कि वे धीमे हैं (कई परिचालनों में अंशों को कम करने और उनके घटकों को तथ्यात्मक बनाने की आवश्यकता होती है), और यह कि कई सामान्य परिचालनों को लागू करना कठिन या असंभव है, और अधिकांश क्रियान्वयन तर्कसंगत होने पर एक नाव पर गिर जाएगा जब ऐसा होता है (जैसे जब आप कॉल करते हैं) sin()
तर्कसंगत पर)।
बीसीडी (बाइनरी कोडेड डेसीमल) व्यक्तिगत अंकों को एनकोड करने के लिए "नीबल्स" (4 बिट्स के समूह) का उपयोग करता है; चूंकि एक कुतरना 16 अलग-अलग मूल्यों को धारण कर सकता है, लेकिन दशमलव संख्या में केवल 10 की आवश्यकता होती है, प्रति कुतरना 6 "अवैध" मान हैं। दशमलव की तरह, बीसीडी नंबर दशमलव-सटीक होते हैं, अर्थात, दशमलव संख्याओं पर की गई गणना ठीक उसी तरह से काम करती है जैसे आप उन्हें पेन और पेपर का उपयोग करके करते हैं। बीसीडी के लिए अंकगणितीय नियम कुछ अनाड़ी हैं, लेकिन उल्टा यह है कि उन्हें स्ट्रिंग्स में बदलना कुछ अन्य प्रारूपों की तुलना में आसान है, जो एम्बेडेड सिस्टम जैसे कम संसाधन वाले वातावरण के लिए विशेष रूप से दिलचस्प है।
स्ट्रिंग्स , हां, सादे पुराने तार, का उपयोग आंशिक संख्याओं का प्रतिनिधित्व करने के लिए भी किया जा सकता है। तकनीकी रूप से, यह BCD के समान है, केवल यह कि एक स्पष्ट दशमलव बिंदु है, और आप प्रति दशमलव अंक एक पूर्ण बाइट का उपयोग करते हैं। जैसे, प्रारूप बेकार है (256 संभावित मूल्यों में से केवल 11 का उपयोग किया जाता है), लेकिन बीसीडी की तुलना में पार्स और उत्पन्न करना अधिक आसान है। इसके अतिरिक्त, क्योंकि सभी उपयोग किए गए मान "अशुभ" हैं, हानिरहित और प्लेटफ़ॉर्म-न्यूट्रल, स्ट्रिंग-एन्कोडेड नंबर नेटवर्क पर समस्याओं के बिना यात्रा कर सकते हैं। सीधे स्ट्रिंग्स पर किए जा रहे अंकगणित को खोजना असामान्य है, लेकिन यह संभव है, और जब आप ऐसा करते हैं, तो वे अन्य दशमलव स्वरूपों (दशमलव और बीसीडी) के रूप में दशमलव-सटीक होते हैं।