web-dev-qa-db-ja.com

MはC#10進リテラル表記で何を表しますか?

10進データ型を処理するには、変数の初期化でこれを行う必要があります。

decimal aValue = 50.0M;

Mパートとは何の略ですか?

258
coson

他の人が言ったように、10進リテラルであることを意味します。ただし、起源はおそらくこの回答の他の場所で示唆されたものではありません。 C#Annotated Standard (MSMAバージョンではなくECMAバージョン)から:

D/dはすでにdecimalによって取得されているため、doubleサフィックスはM/mです。 Mはお金を表すことが示唆されていますが、Peter Goldeは、Mがdecimalの次善の手紙として単に選ばれたことを思い出します。

同様の注釈では、C#の初期バージョンには、byteおよびshortリテラルにそれぞれ「Y」と「S」が含まれていたと述べています。あまり役に立たないという理由で削除されました。

333
Jon Skeet

Mは10進数を意味します。追加しない場合、数値はdoubleとして扱われます。 Dは二重です。

10
MDStephens

C#仕様から:

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

大文字表記または小さな表記を使用できることに注意してください。

5
Shadi Namrouti

Mまたはmの接尾辞が付いた実際のリテラルは、decimal型です。たとえば、リテラル1m、1.5m、1e10m、および123.456Mはすべて10進型です。このリテラルは、正確な値を取得し、必要に応じて銀行家の丸めを使用して最も近い表現可能な値に丸めることにより、10進値に変換されます。値が丸められるか、値がゼロでない場合(後者の場合、符号とスケールは0になります)を除き、リテラルに表示されるスケールは保持されます。したがって、リテラル2.900mは、符号0、係数2900、およびスケール3の10進数を形成するために解析されます。

参照: https://msdn.Microsoft.com/en-us/library/aa691085.aspx

1
LuckyBrain

さて、Mは仮数を表していると思います。 10進数はお金を節約するために使用できますが、10進数はお金のためだけに使用されるという意味ではありません。

0
Ashvani mishra