【问题标题】:Why decimal in c# is different from other c# types?为什么 c# 中的小数与其他 c# 类型不同?
【发布时间】:2008-12-04 04:52:58
【问题描述】:

有人告诉我,十进制是作为用户定义的类型实现的,而其他 c# 类型(如 int)具有专用于它们的特定操作码。这背后的原因是什么?

【问题讨论】:

    标签: c#


    【解决方案1】:

    decimal 并不孤单; DateTimeTimeSpanGuid 等也是自定义类型。我想主要原因是它们没有映射到 CPU 原语。 float (IEEE 754)、int 等在这里非常普遍,但 decimal 是为 .NET 定制的。

    如果您想通过反射直接与操作员交谈,这只会导致问题(因为它们对于 int 等不存在)。我想不出您会注意到差异的任何其他情况。

    (实际上,仍然有结构等来表示其他结构 - 它们只是缺少您可能期望在 包含的大部分内容,例如运算符)

    【讨论】:

    • 我认为关键是小数是唯一在 C# 中拥有自己的关键字但没有被 CLR 特殊处理的类型。
    【解决方案2】:

    “这背后的原因是什么?”

    十进制数学是在软件与硬件中处理的。目前,许多处理器不支持本机十进制(金融十进制与浮点数)数学。但随着 IEEE 754R 的采用,这种情况正在发生变化。

    另见:

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2014-06-09
      • 2021-12-15
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多