为了使用十进制数据类型,我必须对变量初始化这样做:
decimal aValue = 50.0M;
M部分代表什么?
M是十进制中第一个无歧义的字符。如果你不加,这个数字将被视为双数。
D是二阶的。
就像其他人说的,这意味着它是一个十进制的字面量。然而,起源可能不是这个答案中其他地方提到的那些。从c#注释标准 (ECMA版本,不是MS版本):
decimal后缀是M/ M,因为D/ D 已被double占用。 尽管有人认为M 代表钱,彼得·戈德回忆道 M被简单地选为下一个 decimal中最好的字母。
decimal
double
一个类似的注释提到,c#的早期版本分别为byte和short字面量包含“Y”和“S”。它们被放弃了,理由是不经常有用。
byte
short
以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代表尾数。十进制可以用来省钱,但这并不意味着十进制只用于赚钱。