Answers:
正如其他人所说,这意味着它是一个十进制文字。但是,起源可能不是该答案中其他地方建议的起源。从C#注释的标准(ECMA版本,而不是MS版本)中:
该
decimal
后缀是M /因为d / d已经采取米double
。尽管有人建议M代表金钱,但Peter Golde回忆说M只是被简单地选为decimal
。
一个类似的注释提到C#的早期版本分别为byte
和包含“ Y”和“ S” 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表示“十进制”中的第一个无歧义字符。如果您不添加数字,则该数字将被视为双精度数字。
D是两倍。
0.42
为十进制可为您提供一个不同于0.42M
(与使用double常量代替float常量相同的值- float val = 423.3
也会失败)。因此,您需要在微妙的错误行为和需要半秒钟才能解决并符合CLR和C#标准的编译器错误之间进行选择。
带M或m后缀的实数文字是小数类型。例如,文字1m,1.5m,1e10m和123.456M均为十进制类型。通过获取精确值,可以将此文字转换为十进制值,并在必要时使用banker的舍入舍入到最接近的可表示值。除非值四舍五入或值为零(在后一种情况下,符号和小数位将为0),否则保留字面上明显的小数位数。因此,将解析字面量2.900m以形成带符号0,系数2900和小数位3的小数。
好吧,我想M代表了尾数。十进制可以用来省钱,但这并不意味着十进制仅用于赚钱。