Десятичный тип использует 96 битов для хранения последовательности цифр ( ref ), плюс знак (1 бит) и коэффициент масштабирования, который определяет местоположение десятичного разряда.
Для этого десятичного числа:
79228162514264337593543950335
Все 96 битов используются слева от десятичной точки - не осталось ничего, чтобы представить дробную часть ответа.Таким образом, оно округляется.
Если вы разделите число на 10:
7922816251426433759354395033.5
Тогда у вас есть несколько битов для представления дробной части - но только до 1/10, нетмельче.
Ключевое различие между decimal
и double
/ float
заключается в том, что оно основано на масштабном коэффициенте десятичный , указывающем местоположение десятичной точки ;другие плавающие типы основаны на двоичном масштабном коэффициенте, определяющем местоположение двоичной точки .