C # दशमलव शाब्दिक अंकन में M किस लिए खड़ा है?


311

दशमलव डेटा प्रकारों के साथ काम करने के लिए, मुझे इसे वैरिएबल इनिशियलाइज़ेशन के साथ करना होगा:

decimal aValue = 50.0M;

M भाग किस लिए खड़ा होता है?

जवाबों:


386

इसका मतलब है कि यह एक दशमलव शाब्दिक है, जैसा कि अन्य लोगों ने कहा है। हालांकि, मूल शायद इस जवाब में कहीं और सुझाए गए नहीं हैं। से सी # एनोटेट स्टैंडर्ड (ECMA संस्करण, नहीं एमएस संस्करण):

decimalप्रत्यय एम / के बाद से डी / डी पहले से ही द्वारा लिया गया था मीटर है double। यद्यपि यह सुझाव दिया गया है कि एम पैसे के लिए खड़ा है, पीटर गोल्डे याद करते हैं कि एम को अगले सर्वश्रेष्ठ पत्र के रूप में चुना गया था decimal

एक ऐसी ही कोई टिप्पणी कहा गया है कि सी # के प्रारंभिक संस्करणों के लिए "Y" और "एस" शामिल byteऔर shortक्रमशः शाब्दिक। उन्हें बहुत बार उपयोगी नहीं होने के आधार पर गिरा दिया गया था।


6
यह सवाल छोड़ देता है कि ई / ई अगला सबसे अच्छा पत्र क्यों नहीं था।
वीवीएस

61
"ई" समस्याग्रस्त होगा कि यह पहले से ही शाब्दिक रूप से उपयोग किया जाता है। उदाहरण के लिए "2e4m" एक मान्य शाब्दिक (दशमलव 20000) है। भले ही यह अस्पष्ट था (और यह अच्छी तरह से हो सकता है, हालांकि "1e" एक जिज्ञासु संकलक त्रुटि संदेश के साथ समाप्त होता है, यह सुझाव देता है कि यह व्यवहार्य युगल की सीमा से बाहर है, यह नहीं कि यह वाक्यविन्यास रूप से अमान्य है; मुझे संदेह है कि यह अभी भी होगा एक बग है; भ्रामक। "सी" संभवतः किसी भी भ्रम के कारण के बिना समझ में आएगा, हालांकि यह कोई संदेह नहीं होगा कि लोगों को "मुद्रा" सुझाएगा :)
जॉन स्कीट

7
"सी" VB.Net में तार के लिए अक्षर शाब्दिक के साथ संघर्ष करता है, हालांकि वहां भी व्याकरण थोड़ा अलग है।
जोएल कोएहॉर्न

3
मुझे C # और VB में भिन्न होने से बहुत अधिक समस्या नहीं होगी। VB में पहले से ही उदाहरण के लिए, IIRC के अलग-अलग हेक्स सिंटैक्स हैं।
जॉन स्कीट

9
यदि आप "दशमलव" के सिलेबल्स को बाहर निकालते हैं, तो आपको "डी सी मल" मिलता है। ये उपयोग करने के लिए सबसे अधिक समझ में आता है। डी पहले से ही लिया गया है, सी अक्षर हो सकता है, एम एक तार्किक विकल्प की तरह लगता है।
आरोन फ्रेंके

27

सी # विनिर्देशों से:

var f = 0f; // float
var d = 0d; // double
var m = 0m; // decimal (money)
var u = 0u; // unsigned int
var l = 0l; // long
var ul = 0ul; // unsigned long

ध्यान दें कि आप एक अपरकेस या लोअरकेस नोटेशन का उपयोग कर सकते हैं।


19

एम "दशमलव" में पहले गैर-अस्पष्ट चरित्र को संदर्भित करता है। यदि आप इसे नहीं जोड़ते हैं तो संख्या को दोहरे के रूप में माना जाएगा।

डी डबल है।


4
मुझे लगता है कि कुछ महत्वपूर्ण कारण है, लेकिन यह मुझे परेशान करता है कि यदि आप एम को शाब्दिक रूप से छोड़ते हैं तो आपको एक संकलन-समय त्रुटि मिलती है। यह ऐसा नहीं है जैसे यह अस्पष्ट है।
SeaDrive

1
@JSON यह पूर्णांक प्रकारों के लिए उस तरह से काम करता है, क्योंकि वहां कोई अस्पष्टता नहीं है - जब तक यह प्रकार फिट बैठता है, यह किसी भी जानकारी को नहीं खोएगा / गार्बेज नहीं करेगा। वही दशमलव संख्याओं का सच नहीं है। 0.42दशमलव के लिए दोहरे मान को कास्टिंग करना आपको एक अलग मान दे सकता है 0.42M(और फ्लोट शाब्दिक के स्थान पर दोहरे शाब्दिक का उपयोग करने के लिए float val = 423.3भी - विफल रहता है)। इसलिए आप एक समान रूप से गलत व्यवहार और एक संकलक त्रुटि के बीच चयन कर रहे हैं जो सीएलआर और सी # मानकों को ठीक करने और अनुरूप करने में आधा सेकंड लेता है।
लुआं

1
"M", जैसे "डेसीमल"
Shadi Namrouti

2

M या m द्वारा प्रत्यय किया गया एक वास्तविक शाब्दिक प्रकार दशमलव है। उदाहरण के लिए, शाब्दिक 1m, 1.5m, 1e10m और 123.456M सभी प्रकार के दशमलव हैं। यह शाब्दिक सटीक मान लेकर दशमलव मान में परिवर्तित हो जाता है, और यदि आवश्यक हो, तो बैंक की गोलाई का उपयोग करके निकटतम प्रतिनिधित्व योग्य मूल्य के लिए गोलाई होती है। शाब्दिक रूप से स्पष्ट कोई भी पैमाना तब तक संरक्षित है जब तक कि मूल्य गोल न हो जाए या मूल्य शून्य न हो (जिसमें बाद वाला मामला साइन और स्केल 0 होगा)। इसलिए, संकेत 2. 0, गुणांक 2900, और स्केल 3 के साथ दशमलव बनाने के लिए शाब्दिक 2.900 मीटर की पार्स की जाएगी।

असली शाब्दिक के बारे में अधिक पढ़ें


0

ठीक है, मुझे लगता है कि एम मंटिसा का प्रतिनिधित्व करता है। दशमलव का उपयोग पैसे बचाने के लिए किया जा सकता है, लेकिन इसका मतलब यह नहीं है, दशमलव केवल पैसे के लिए उपयोग किया जाता है।


यह वास्तव में एक अनुमान है, और यह "पहले से उपलब्ध गैर-अस्पष्ट चरित्र" परिकल्पना की तुलना में बहुत कम प्रशंसनीय है। यदि आपके पास समर्थन साक्ष्य हैं, तो इसे अपने उत्तर में शामिल करें।
इशेरवुड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.