【发布时间】:2008-12-04 04:52:58
【问题描述】:
有人告诉我,十进制是作为用户定义的类型实现的,而其他 c# 类型(如 int)具有专用于它们的特定操作码。这背后的原因是什么?
【问题讨论】:
标签: c#
有人告诉我,十进制是作为用户定义的类型实现的,而其他 c# 类型(如 int)具有专用于它们的特定操作码。这背后的原因是什么?
【问题讨论】:
标签: c#
decimal 并不孤单; DateTime、TimeSpan、Guid 等也是自定义类型。我想主要原因是它们没有映射到 CPU 原语。 float (IEEE 754)、int 等在这里非常普遍,但 decimal 是为 .NET 定制的。
如果您想通过反射直接与操作员交谈,这只会导致问题(因为它们对于 int 等不存在)。我想不出您会注意到差异的任何其他情况。
(实际上,仍然有结构等来表示其他结构 - 它们只是缺少您可能期望在 中 包含的大部分内容,例如运算符)
【讨论】:
“这背后的原因是什么?”
十进制数学是在软件与硬件中处理的。目前,许多处理器不支持本机十进制(金融十进制与浮点数)数学。但随着 IEEE 754R 的采用,这种情况正在发生变化。
另见:
【讨论】: