为了使用十进制数据类型,我必须通过变量初始化来做到这一点:
decimal aValue = 50.0M;
M部分代表什么?
正如其他人所说,这意味着它是十进制文字。但是,起源可能不是此答案中其他地方建议的起源。来自C# Annotated Standard(ECMA 版本,而不是 MS 版本):
后缀是 M/m ,
decimal
因为 D/d 已经被double
. 尽管有人建议 M 代表金钱,但 Peter Golde 回忆说,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 指“十进制”中的第一个非歧义字符。如果您不添加它,该数字将被视为双倍。
D是双倍的。
以 M 或 m 为后缀的真实文字是decimal (money)类型。例如,文字 1m、1.5m、1e10m 和 123.456M 都是十进制类型。该文字通过取确切值转换为十进制值,并在必要时使用银行四舍五入四舍五入到最接近的可表示值。除非值被四舍五入或值为零(在后一种情况下,符号和比例将为 0),否则文字中明显的任何比例都会被保留。因此,文字 2.900m 将被解析为符号 0、系数 2900 和小数位数 3 的小数。
好吧,我猜 M 代表尾数。小数可以用来省钱,但不代表小数只用来存钱。