393

为了使用十进制数据类型,我必须通过变量初始化来做到这一点:

decimal aValue = 50.0M;

M部分代表什么?

4

5 回答 5

462

正如其他人所说,这意味着它是十进制文字。但是,起源可能不是此答案中其他地方建议的起源。来自C# Annotated Standard(ECMA 版本,而不是 MS 版本):

后缀是 M/m ,decimal因为 D/d 已经被double. 尽管有人建议 M 代表金钱,但 Peter Golde 回忆说,M 只是被选为decimal.

一个类似的注释提到 C# 的早期版本分别包含“Y”和“S”用于byteshort文字。它们以不经常使用为由被丢弃。

于 2009-06-10T19:05:57.217 回答
88

来自 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

请注意,您可以使用大写或小写表示法。

于 2019-01-16T12:34:20.573 回答
25

M 指“十进制”中的第一个非歧义字符。如果您不添加它,该数字将被视为双倍。

D是双倍的。

于 2009-06-10T18:54:51.107 回答
12

以 M 或 m 为后缀的真实文字是decimal (money)类型。例如,文字 1m、1.5m、1e10m 和 123.456M 都是十进制类型。该文字通过取确切值转换为十进制值,并在必要时使用银行四舍五入四舍五入到最接近的可表示值。除非值被四舍五入或值为零(在后一种情况下,符号和比例将为 0),否则文字中明显的任何比例都会被保留。因此,文字 2.900m 将被解析为符号 0、系数 2900 和小数位数 3 的小数。

阅读有关真实文字的更多信息

于 2016-03-28T00:52:31.777 回答
-1

好吧,我猜 M 代表尾数。小数可以用来省钱,但不代表小数只用来存钱。

于 2019-02-24T06:38:08.600 回答