为什么C#中的十进制类型与其他类型不同?

10 浏览
0 Comments

为什么C#中的十进制类型与其他类型不同?

我被告知十进制数是以用户定义类型的形式实现的,而其他的C#类型,比如int,专门为它们分配了特定的操作码。这背后的原因是什么?

0
0 Comments

为什么C#中的十进制类型与其他C#类型不同?

在C#中,十进制数的处理是通过软件而不是硬件来完成的。目前,许多处理器不支持原生的十进制(与浮点数相比)数学运算。然而,随着IEEE 754R的采用,情况正在发生变化。

为了更好地理解为什么C#中的十进制类型与其他类型不同,可以参考以下链接:

- Decimal vs Double Speed

- http://software.intel.com/en-us/blogs/2008/03/06/intel-decimal-floating-point-math-library/

- http://grouper.ieee.org/groups/754/

以上链接提供了更多关于C#中十进制类型的原因和解决方法的信息。

0
0 Comments

为什么C#中的十进制类型(decimal)与其他C#类型不同?

在C#中,除了十进制类型(decimal)之外,DateTimeTimeSpanGuid等也是自定义类型。我想主要原因是它们不映射到CPU原语。float(IEEE 754)、int等在这里非常普遍,但是十进制类型(decimal)是专为.NET定制的。

只有在需要通过反射直接与操作符交互时,这才会真正成为一个问题(因为针对int等类型的操作符并不存在)。我想不出其他任何情况下你会注意到这种差异。

(实际上,还有一些结构体等用于表示其他类型 - 它们只是缺少你可能期望其中包含的大部分内容,例如操作符)

我认为重点是十进制类型(decimal)是C#中唯一一个拥有自己关键字但在CLR中并未特殊处理的类型。

0