decimal
प्रकार एक 128-बिट डेटा वित्तीय और मौद्रिक गणना के लिए उपयुक्त प्रकार है।
decimal
प्रकार 1.0 × 10 -28 से लगभग 7.9 × 10 से 28-29 महत्वपूर्ण अंकों के साथ मानों का प्रतिनिधित्व कर सकता है। , ई, जहां से साइन रों 0 या 1 है -
प्रकार decimal
के मूल्यों के परिमित सेट प्रपत्र (-1) रों × ग × 10 के हैं गुणांक ग द्वारा 0 ≤ ग दिया जाता है, और बड़े पैमाने ई ऐसी है कि 0 ≤ ई ≤ 28.
decimal
प्रकार हस्ताक्षरित शून्य, infinities, या NaN का समर्थन नहीं करता है। एक decimal
को दस की शक्ति द्वारा स्केल किए गए 96-बिट पूर्णांक के रूप में दर्शाया गया है। 1.0m से कम मूल्य वाले दशमलव के साथ, मान 28 वें दशमलव स्थान के लिए सटीक है, लेकिन आगे नहीं।
1.0m से अधिक या उसके बराबर पूर्ण मान वाले दशमलव के लिए, मान 28 या 2 9 अंकों के बराबर है। float
और double
डेटा प्रकारों के विपरीत, दशमलव अंश संख्या जैसे 0.1 को दशमलव प्रतिनिधित्व में बिल्कुल दर्शाया जा सकता है। float
और double
प्रस्तुतिकरणों में, ऐसी संख्याएं अक्सर अनंत भिन्न होती हैं, जिससे वे प्रतिनिधित्व गोल-ऑफ त्रुटियों के प्रति अधिक प्रवण होते हैं।
यदि बाइनरी ऑपरेटर के संचालन में से कोई एक प्रकार decimal
है, तो दूसरा ऑपरेंड एक अभिन्न प्रकार या decimal
टाइप होना चाहिए। यदि एक अभिन्न प्रकार ऑपरेंड मौजूद है, तो ऑपरेशन करने से पहले इसे decimal
में परिवर्तित कर दिया जाता है।
decimal
के मानों पर एक ऑपरेशन का नतीजा यह है कि एक सटीक परिणाम (प्रत्येक ऑपरेटर के लिए परिभाषित पैमाने के रूप में, स्केल को संरक्षित करने) और उसके बाद प्रतिनिधित्व करने के लिए गोल करने के परिणामस्वरूप परिणाम होगा। परिणाम निकटतम प्रतिनिधित्व योग्य मूल्य के लिए गोल किए जाते हैं, और, जब परिणाम दो प्रतिनिधित्व योग्य मानों के बराबर होता है, उस मूल्य के लिए जिसमें कम से कम महत्वपूर्ण अंक स्थिति में भी संख्या होती है (इसे "बैंकर राउंडिंग" के रूप में जाना जाता है)। शून्य परिणाम के पास हमेशा 0 का संकेत होता है और 0.
यदि दशमलव अंकगणितीय ऑपरेशन पूर्ण मान में 5 × 10 -29 से कम या उसके बराबर मान उत्पन्न करता है, तो ऑपरेशन का परिणाम शून्य हो जाता है । यदि दशमलव अंकगणितीय ऑपरेशन परिणाम उत्पन्न करता है जो decimal
प्रारूप के लिए बहुत बड़ा है, तो System.OverflowException
फेंक दिया गया है।
decimal
प्रकार में अधिक सटीकता है लेकिन फ्लोटिंग-पॉइंट प्रकारों की तुलना में छोटी रेंज है। इस प्रकार, फ़्लोटिंग-पॉइंट प्रकारों से decimal
से रूपांतरण ओवरफ्लो अपवाद उत्पन्न कर सकते हैं, और decimal
से फ़्लोटिंग-पॉइंट प्रकारों में रूपांतरण सटीकता का नुकसान हो सकता है। इन कारणों से, फ़्लोटिंग-पॉइंट प्रकारों और decimal
के बीच कोई अंतर्निहित रूपांतरण मौजूद नहीं है, और बिना स्पष्ट रूप से, फ्लोटिंग-पॉइंट और decimal
उसी अभिव्यक्ति में संचालन करना संभव नहीं है।
है लिंक किया गया लेख उपयोगी था; यह श्री स्कीट सी # -संबंधित प्रश्नों के लिए एक विश्वसनीय स्रोत की तरह प्रतीत होता है। उनके पास कई अंतर्दृष्टिपूर्ण लेख हैं। –
नया फेंक दो SomeOneDoesntKnowJonSkeetException(); –
@ जौके: 'कोशिश/पकड़' ब्लॉक की कोई ज़रूरत नहीं है, इसे कभी नहीं फेंक दिया जाएगा। –