Что означает M в десятичной буквенной нотации C#?

чтобы работать с десятичными типами данных, я должен сделать это с инициализацией переменной:

decimal aValue = 50.0M;

что означает часть M?

4 ответов


это означает, что это десятичный литерал, как говорили другие. Однако истоки, вероятно, не те, которые предлагаются в другом месте этого ответа. От C# Аннотированный Стандарт (версия ECMA, не версия MS):

на decimal суффикс м/м с д/д был уже взят double. Хотя было высказано предположение, что М выступает за деньги, вспоминает Питер Голд что M был выбран просто как следующий лучшее письмо в decimal.

в аналогичной аннотации упоминается, что ранние версии C# включали "Y" и "S" для byte и short литералы соответственно. Их сбрасывали на том основании, что они не очень часто бывают полезны.


M означает десятичное. Если вы не добавите его, число будет рассматриваться как двойное. D-это двойной.


реальный литерал с суффиксом M или m имеет тип decimal. Например, литералы 1m, 1.5 m, 1e10m и 123.456 M имеют тип decimal. Этот литерал преобразуется в десятичное значение, принимая точное значение и, при необходимости, округляя до ближайшего представимого значения с помощью округления банкира. Любой масштаб, видимый в литерале, сохраняется, если значение не округлено или значение равно нулю (в последнем случае знак и масштаб будут равны 0). Следовательно, литерал 2.900 m будет проанализирован на форма десятичный знак 0, коэффициент 2900, и шкалы 3.

ссылка:https://msdn.microsoft.com/en-us/library/aa691085.aspx


наверное стоит денег.