Смысл использования десятичного (128 бит) над двойным (64 бит) и с плавающей точкой (32 бит) обычно не связан с размером. Это связано с базой. В то время как double и float являются плавающими двоичными точечными типами, decimal - это плавающий десятичный точечный тип - и это та функция, которая позволяет ему представлять числа, подобные 0.1, в точности там, где float / double нельзя.
Нет концептуальной причины, по которой у нас не могло бы быть 64-битного десятичного типа, и во многих случаях этого действительно было бы достаточно - но пока такой тип не появится или вы не напишите его самостоятельно, пожалуйста не используйте «более короткие» (и двоичные числа с плавающей точкой) типы float / double для финансовых расчетов. Если да, то ты напрашиваешься на неприятности.
Если вы предлагаете записать тип хранилища, который может преобразовывать в / из десятичного числа и все еще является плавающим десятичным типом, это звучит как потенциально хорошая идея, даже если она не может выполнять какие-либо вычисления. Вам нужно быть очень осторожным, когда вы думаете о том, что делать, если вас когда-либо просят преобразовать десятичное значение, которое вы не можете точно представить. Мне было бы интересно увидеть такой тип, если честно. Хм ...
(Как указывали другие ответы, я действительно должен убедиться, что это числа, которые занимают память, прежде чем делать это, однако. Если вам не нужно , чтобы сделать это, мало Точка введения дополнительной сложности умозрительно.)