Ответы:
Это означает, что это десятичный литерал, как уже говорили другие. Тем не менее, происхождение, вероятно, не те, которые предлагаются в другом месте в этом ответе. Из Аннотированного стандарта C # (версия ECMA, а не версия MS):
decimal
Суффикс М / м , так как D / D уже принятоdouble
. Хотя было высказано предположение, что М означает деньги, Питер Голде напоминает, что М был выбран просто в качестве следующего лучшего письма в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
Обратите внимание, что вы можете использовать прописные или строчные записи.
М относится к первому не двусмысленному символу в «десятичном». Если вы не добавите его, число будет считаться двойным.
D двойной.
0.42
в десятичное может дать вам значение, отличное от 0.42M
(и то же самое для использования двойного литерала вместо литерала с плавающей запятой - float val = 423.3
также не удается). Таким образом, вы выбираете между слегка неправильным поведением и ошибкой компилятора, для исправления которой требуется полсекунды и которая соответствует стандартам CLR и C #.
Действительный литерал с суффиксом M или m имеет тип decimal. Например, литералы 1m, 1.5m, 1e10m и 123.456M имеют десятичный тип. Этот литерал преобразуется в десятичное значение путем получения точного значения и, при необходимости, округления до ближайшего представимого значения с использованием округления банкира. Любая шкала, видимая в литерале, сохраняется, если только значение не округлено или значение не равно нулю (в этом случае знак и масштаб будут равны 0). Следовательно, литерал 2.900m будет проанализирован для формирования десятичной дроби со знаком 0, коэффициентом 2900 и шкалой 3.
Ну, я думаю, М представляют мантиссу. Десятичная дробь может использоваться для экономии денег, но это не значит, что десятичная дробь используется только для денег.