Ответ 1
Документировано в Спецификация языка С#, глава 2.4.4:
float f = 1.2f;
double d = 1.2d;
uint u = 2u;
long l = 2L;
ulong ul = 2UL;
decimal m = 2m;
Ничего для int, byte, sbyte, short, ushort.
Если я хочу использовать десятичный литерал в коде, я видел, что существует m-суффикс (где m означает деньги). Является ли это подходящим для любых десятичных знаков или существует более общее присваивание (d означает двойное, то есть для shure не правильное, хотя поддерживается прямое преобразование).
object decimalValue=2m;
Обратите внимание, что я взял объект-назначение в качестве примера, потому что в случае...
decimal decimalValue=2;
... его неявное понимание того, что 2 следует интерпретировать как десятичное с помощью компилятора.
EDIT: m выглядит нормально, msdn использует его в качестве примера для десятичного типа.
Документировано в Спецификация языка С#, глава 2.4.4:
float f = 1.2f;
double d = 1.2d;
uint u = 2u;
long l = 2L;
ulong ul = 2UL;
decimal m = 2m;
Ничего для int, byte, sbyte, short, ushort.
Без суффикса числовой реальный литерал будет двойным. Суффикс m указывает, что числовой реальный литерал должен быть десятичным.
Это действительно важно знать, так как арифметика значений с плавающей запятой (например, Double) является неточной. Например:
object decimalValue=(5.32 + 2.23);
Здесь decimalValue фактически будет содержать Double, с неожиданным значением 7.5500000000000007! Если я хочу 7.55, я мог бы сделать это:
object decimalValue=(5.32m + 2.23m);
Чтобы ответить на ваш вопрос о том, существует ли более общий суффикс, m является единственным суффиксом для Decimal в С#. Это может стоить денег, как вы упомянули, но они использовали что-то другое, чем d, поскольку это используется Double!
Дополнительная литература: decimal (ссылка на С#)
Короткий ответ Объявить десятичный номер в С#
decimal firstMoney = 141.28m;
O/P: 141.28
decimal secondMoney = 100.00m;
O/P: 100
Подробнее см. MSDN.
Надежда помогает кому-то.