C # 10 진 리터럴 표기법에서 M의 의미는 무엇입니까?


311

십진 데이터 유형으로 작업하려면 변수 초기화 로이 작업을 수행해야합니다.

decimal aValue = 50.0M;

M 부분은 무엇을 의미합니까?

답변:


386

다른 사람들이 말했듯이 십진 리터럴임을 의미합니다. 그러나 기원은 아마도이 답변의 다른 곳에서 제안 된 것이 아닐 것입니다. 로부터 C # 주석 표준 합니다 (ECMA 버전이 아닌 MS 버전) :

decimal접미사 M / D / D가 이미 촬영 된 사람 m이다 double. M은 돈을 의미한다고 제안되었지만, Peter Golde는 M이 단순히 다음으로 최고의 편지로 선정되었다고 회상합니다 decimal.

비슷한 주석은 C #의 초기 버전에 각각 "Y"와 "S"가 포함되어 byte있고 short리터럴이 있다고 언급합니다 . 그들은 자주 유용하지 않다는 이유로 떨어졌습니다.


6
그것은 왜 E / e가 차기 최고의 편지가 아닌지에 대한 의문을 남깁니다.
VVS

61
"e"는 이미 리터럴에서 사용된다는 문제가 있습니다. 예를 들어 "2e4m"은 유효한 리터럴 (10 진수 20000)입니다. 비록 모호하지 않더라도 (그리고 "1e"는 실행 가능한 복식의 범위를 벗어난 것을 제안하는 호기심 많은 컴파일러 오류 메시지로 끝나지만 그것이 구문 상 유효하지 않다는 것이 아니라 버그라고 생각합니다) 혼란스러운. 그것은 의심의 여지가 :) 사람들에게 "통화"를 제안하지 않을 것이다하지만 "C"는 아마도 혼란을 유발하지 않고 나을
존 소총

7
"c"는 VB.Net에서 문자열의 문자 리터럴과 충돌하지만 문법은 조금 다릅니다.
Joel Coehoorn

3
C #과 VB에서 다른 점에 대해서는 아무런 문제가 없습니다. VB에는 이미 다른 16 진수 구문 (예 : IIRC)이 있습니다.
Jon Skeet

9
"Decimal"의 음절을 배치하면 "De Ci Mal"이 나타납니다. 이것들은 사용하는 것이 가장 합리적입니다. D는 이미 취해졌고 C는 문자가 될 수 있으며 M은 논리적 인 선택처럼 보입니다.
Aaron Franke

27

C # 사양에서 :

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

M은 "소수"의 첫 번째 모호하지 않은 문자를 나타냅니다. 추가하지 않으면 숫자가 두 배로 취급됩니다.

D는 두 배입니다.


4
중요한 이유가 있다고 생각하지만 리터럴에서 m을 그대로두면 컴파일 타임 오류가 발생한다는 것을 자극합니다. 모호한 것처럼 보이지 않습니다.
SeaDrive

1
@JSON 모호성이 없기 때문에 정수 유형에 대해 그렇게 작동합니다. 유형에 맞는 한 정보가 손실되거나 깨지지 않습니다. 십진수도 마찬가지입니다. double 값 0.42을 10 진수로 캐스팅하면 다른 값을 얻을 수 있습니다 0.42M(float 리터럴 대신 double 리터럴을 사용하는 것과 동일- float val = 423.3실패). 따라서 미묘하게 잘못된 동작과 CLR 및 C # 표준을 수정하고 준수하는 데 0.5 초가 걸리는 컴파일러 오류 중에서 선택합니다.
Luaan

1
"deciMal"과 같은 "M"
Shadi Namrouti

2

M 또는 m으로 접미사가 붙은 실제 리터럴은 10 진수 유형입니다. 예를 들어 리터럴 1m, 1.5m, 1e10m 및 123.456M은 모두 10 진수 형식입니다. 이 리터럴은 정확한 값을 취하고 필요한 경우 은행가 반올림을 사용하여 가장 가까운 표현 가능한 값으로 반올림하여 10 진수 값으로 변환됩니다. 값이 반올림되거나 값이 0이 아닌 경우 리터럴에 표시된 모든 스케일이 유지됩니다 (후자의 경우 부호와 스케일이 0 임). 따라서 리터럴 2.900m은 구문 분석되어 부호 0, 계수 2900 및 스케일 3으로 10 진수를 형성합니다.

실제 리터럴에 대해서 더 읽어보세요.


0

음, M은 가수를 나타냅니다. 십진수는 돈을 저축하는 데 사용될 수 있지만, 십진수는 돈을 위해서만 사용되는 것은 아닙니다.


그것은 실제로 추측이며, "첫 번째로 사용 가능한 비 모호하지 않은 특성"가설보다 훨씬 덜 타당합니다. 근거가있는 증거가 있다면 답에 포함 시키십시오.
isherwood
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.