Ответ на ваш вопрос содержится в полном техницветоме по documentation:
Тип Десятичного значения представляет собой десятичное число в диапазоне от положительного 79,228,162,514,264,337,593,543,950,335 отрицательных 79,228,162,514,264,337,593,543,950,335. Тип десятичного значения - , соответствующий финансовым расчетам, требующим большого количества значимых интегральных и дробных цифр и без ошибок округления. Десятичный тип не устраняет необходимость округления. Скорее, он минимизирует ошибки из-за округления.
десятичное число представляет собой значение с плавающей точкой, который состоит из знака, числовое значение, где каждая цифра в значении в диапазоне от 0 до 9, а также коэффициент масштабирования, который указывает положение плавающей запятой который разделяет интегральную и дробную части числового значения.
Двоичное представление десятичного значения состоит из 1-битного знака, 96-битное целое число, а коэффициент масштабирования используется для разделения 96-разрядного целого числа и определить, какую часть этого является десятичной дробью , Коэффициент масштабирования неявно число 10, увеличен до показателя степени в диапазоне от 0 до 28. Таким образом, двоичное представление десятичное значение имеет вид, ((-2 до 2)/10 (0 до 28)), где -2 -1 равно MinValue, а 2 -1 равно MaxValue. Дополнительные сведения о двоичном представлении десятичных значений и примере см. В конструкторе Decimal(Int32[]) и методе GetBits.
Масштабный коэффициент также сохраняет любые конечные нули в десятичном . Конечные нули не влияют на значение десятичного числа в арифметических или сравнительных операциях. Однако конечные нули могут быть , обнаруженные методом ToString, если применяется соответствующая строка формата .
И двоичное представление, как описано в документации для GetBits
:
Двоичное представление десятичного числа состоит из 1-битового знака, 96-битового целого числа А, а коэффициент масштабирования, используемый для разделения целочисленного числа и указать, какая часть его является десятичной дробью. Коэффициент масштабирования неявно равен числу 10, поднятому до показателя в диапазоне от 0 до 28.
Возвращаемое значение представляет собой четырехэлементный массив из 32-разрядных целых чисел.
Первый, второй и третий элементы возвращаемого массива содержат младшие, средние и высокие 32 бита 96-битного целочисленного числа.
Четвертый элемент возвращаемого массива содержит масштабный коэффициент и знак . Он состоит из следующих частей:
Биты от 0 до 15, нижнее слово, не используются и должны быть равны нулю.
Биты с 16 по 23 должны содержать показатель между 0 и 28, который указывает мощность 10 для деления целочисленного числа.
Биты с 24 по 30 не используются и должны быть равны нулю.
Бит 31 содержит знак: 0 означает положительный, а 1 означает отрицательный.
Обратите внимание, что представление бит различает отрицательный и положительный ноль. Эти значения считаются равными во всех операциях .
http://stackoverflow.com/questions/618535/what-is-the-difference-between-decimal-float-and-double-in-c или еще лучше http://csharpindepth.com/Articles /General/Decimal.aspx –