我被告知十进制是作为用户定义的类型实现的,其他c#类型如int有专门的操作码.这背后的原因是什么?
decimal
并不孤单 DateTime
,TimeSpan
,Guid
,等也自定义类型.我猜主要原因是它们没有映射到CPU灵长类动物.float
(IEEE 754)int
等在这里非常普遍,但是decimal
对.NET来说是定制的.
如果您想通过反射直接与操作员交谈(因为它们不存在于int等),这只会导致问题.我想不出你注意到差异的任何其他情况.
(实际上,仍有结构等来表示人-他们只是最缺乏的你可能会想到什么是在他们,如运营商)
"这背后的原因是什么?"
十进制数学在软件与硬件之间处理.目前,许多处理器不支持原始十进制(金融小数与浮点数)数学.随着IEEE 754R的采用,这种情况正在发生变化.
也可以看看:
十进制与双速
http://software.intel.com/en-us/blogs/2008/03/06/intel-decimal-floating-point-math-library/
http://grouper.ieee.org/groups/754/