इस स्थिति में समझने के लिए दो महत्वपूर्ण अवधारणाएं हैं।
- शाब्दिक मान
- अंतर्निहित रूपांतरण
अनिवार्य रूप से क्या आप पूछ रहे हैं कि क्या एक शाब्दिक मूल्य परोक्ष 2 प्रकार के बीच परिवर्तित किया जा सकता है। कुछ मामलों में कंपाइलर वास्तव में आपके लिए ऐसा करेगा जब परिशुद्धता में कोई नुकसान नहीं होगा। उदाहरण के लिए यह लो:
long n = 1000; // Assign an Int32 literal to an Int64.
यह संभव है क्योंकि एक long
(Int64) एक int
(Int32) की तुलना में मूल्यों की एक बड़ी रेंज शामिल हैं। आपके विशिष्ट उदाहरण के लिए परिशुद्धता खोना संभव है। decimal
और double
के लिए यहां बहुत अलग श्रेणियां हैं।
Decimal: ±1.0 × 10−28 to ±7.9 × 1028
Double: ±5.0 × 10−324 to ±1.7 × 10308
ज्ञान के साथ यह स्पष्ट हो जाता है कि एक अंतर्निहित रूपांतरण एक बुरा विचार क्यों है। यहां अंतर्निहित रूपांतरणों की एक सूची दी गई है जो वर्तमान में सी # कंपाइलर का समर्थन करता है। मैं अत्यधिक अनुशंसा करता हूं कि आप इस विषय पर थोड़ा सा प्रकाश पढ़ लें।
Implicit Numeric Conversions Table
@slaks: तो एक दशमलव initiliazing की उचित तरीके क्या है? –
उन्होंने 'एम' प्रत्यय के साथ, जिस तरह से किया था। – SLaks
@ जेनी, अगले प्रश्न से आगे निकलने के लिए, 'डबल डी = 1/2' बराबर 0. इस प्रश्न और उत्तर के संदर्भ में क्यों सोचें। –