Ответ 1
Ответ на ваш вопрос предоставлен в полном техническом документе документация:
Тип десятичного значения представляет десятичные числа от положительное 79,228,162,514,264,337,593,543,950,335 до отрицательного 79.228.162.514.264.337.593.543.950.335. Тип десятичного значения подходит для финансовых расчетов, требующих большого количества значительные интегральные и дробные цифры и отсутствие ошибок округления. Тип Decimal не устраняет необходимость округления. Скорее, это минимизирует ошибки из-за округления.
Десятичное число - это значение с плавающей запятой, которое состоит из знака, числовое значение, где каждая цифра в значении находится в диапазоне от 0 до 9, и коэффициент масштабирования, который указывает положение плавающей десятичной точки который разделяет интегральную и дробную части числового значения.
Двоичное представление десятичного значения состоит из 1-битового знака, 96-битовое целочисленное число и коэффициент масштабирования, используемый для разделения 96-битное целое число и укажите, какая часть его является десятичной дробью. Масштабный коэффициент неявно равен числу 10, поднятому до показателя от 0 до 28. Следовательно, двоичное представление Десятичное значение имеет вид ((-2 96 до 2 96)/10 (от 0 до 28)), где -2 96 -1 равно MinValue, а 2 96 -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 означает отрицательный.
Обратите внимание, что представление битов различает отрицательные и положительный ноль. Эти значения считаются равными во всех операции.