System.Decimal или 'decimal' - это 128-битный тип данных. По сравнению с типами с плавающей запятой десятичный тип имеет большую точность и меньший диапазон, что делает его пригодным для финансовых и денежных расчетов.
Если вы хотите, чтобы числовой вещественный литерал обрабатывался как десятичный, используйте суффикс m или M:
decimal amount = 300.5m;
var dec = 300.5M; // same as above
Десятичная дробь реализована в CLR и гарантированно даст одинаковый результат независимо от аппаратного обеспечения.
ДжаредПар прав!