在c#十进制文字表示法中,M代表什么?

为了使用十进制数据类型,我必须对变量初始化这样做:

decimal aValue = 50.0M;

M部分代表什么?

193654 次浏览

M是十进制中第一个无歧义的字符。如果你不加,这个数字将被视为双数。

D是二阶的。

就像其他人说的,这意味着它是一个十进制的字面量。然而,起源可能不是这个答案中其他地方提到的那些。从c#注释标准 (ECMA版本,不是MS版本):

decimal后缀是M/ M,因为D/ D 已被double占用。 尽管有人认为M 代表钱,彼得·戈德回忆道 M被简单地选为下一个 decimal中最好的字母。

一个类似的注释提到,c#的早期版本分别为byteshort字面量包含“Y”和“S”。它们被放弃了,理由是不经常有用。

以M或M结尾的实字面值类型为小数(钱)。例如,1m、1.5m、1e10m和123.456M都是十进制类型。通过取精确的值将这个字面值转换为十进制值,如果需要,还可以使用银行舍入法将其转换为最接近的可表示值。字面量中任何明显的刻度都将被保留,除非值是四舍五入或值为零(在后者的情况下,符号和刻度将为0)。因此,字面量2.900m将被解析为符号为0,系数为2900,刻度为3的小数。

阅读更多关于真正的文字

来自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代表尾数。十进制可以用来省钱,但这并不意味着十进制只用于赚钱。