回答:
他の人が言ったように、それは10進数リテラルであることを意味します。ただし、起源はおそらくこの回答の他の場所で示唆されたものではありません。C#注釈付き標準(ECMAバージョンではなく、MSのバージョン):
decimal
サフィックスは、M / D / dは既にによって撮影されたので、Mですdouble
。Mは金の略であることが示唆されていますが、ピーターゴールデは、Mが単にの次に優れた文字として選ばれたことを思い出しdecimal
ます。
同様の注釈は、C#の初期バージョンにはそれぞれ「Y」と「S」byte
とshort
リテラルが含まれていたと述べています。彼らはあまり役に立たないという理由で落とされました。
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
大文字または小文字の表記を使用できることに注意してください。
Mは、「10進数」の最初のあいまいでない文字を指します。追加しない場合、数値はdoubleとして扱われます。
Dはdoubleです。
0.42
をdecimalにキャストすると、異なる値が得られます0.42M
(floatリテラルの代わりにdoubleリテラルを使用した場合も同じです- float val = 423.3
失敗します)。したがって、微妙に間違った動作と、修正に0.5秒かかり、CLRおよびC#標準に準拠するコンパイラエラーのどちらかを選択します。
Mまたはmが接尾辞となる実数リテラルは、10進数タイプです。たとえば、リテラル1m、1.5m、1e10m、および123.456Mはすべて10進数型です。このリテラルは、正確な値を取り、必要に応じて銀行の丸めを使用して最も近い表現可能な値に丸めることにより、10進値に変換されます。値が丸められるか、値がゼロ(後者の場合、符号とスケールが0になる)でない限り、リテラルで明らかなスケールは保持されます。したがって、リテラル2.900mは解析され、符号0、係数2900、スケール3の10進数が形成されます。
まあ、私はMが仮数を表すと思います。小数はお金を節約するために使用できますが、小数がお金のためだけに使用されるという意味ではありません。