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


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

decimal aValue = 50.0M;

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

4 218

4 ответа:

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

The 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 м будет проанализирован, чтобы сформируйте десятичное число со знаком 0, коэффициентом 2900 и масштабом 3.

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

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