关于浮点:Borland C ++ Builder中是否有类似C#的“十进制”类型?

Are there any “type” on Borland C++ Builder like “decimal” from C#?

在C中,有一个名为decimal的类型(system.decimal结构)。我发现的信息表明,在某些情况下,它比floatdouble类型更好:

  • stackoverflow-网络上的双精度问题
  • StackOverflow-如何制作-双打-正常工作-C-Sharp

Borland C++ Builder程序有类似的类型吗?


c,.net的System.Decimal类型中的decimal类型只是一个浮点数字,存储为base-10而不是base-2编码。floatdouble是更典型的基2浮点数。也就是说,double存储为+/- x * 2^y,而十进制存储为+/- x * 10 ^ y。这就是为什么它能更好地处理财务数据的原因,例如,财务数据通常用x * 10^-2表示。IEEE754标准(浮点数学标准)称之为"十进制浮点"数学,并定义了32位和64位版本。

在C++中,这些类型是在EDCOX1的9个名称空间中实现的,在EDCOX1×12的头中被称为EDCOX1、10和EDCX1 11。如果Borland C++Builder有这样的类型,你会在那里找到它。GNU的C++库包括这个标头,但实际上它还不是标准的一部分,所以BCB可能没有它。如果是这样,您需要使用第三方库。@Dash关于英特尔十进制浮点库的例子可能是最著名的此类库,尽管谷歌搜索IEEE 754 Decimal时,如果出于某种原因需要,应该会找到其他库。


以下是可以在Delphi中使用的浮点类型:

1
2
3
4
5
single  :  4 bytes (32bits)
real    :  6 bytes (48bits)
double  :  8 bytes (64bits)
currency:  8 bytes (64bits) (this is probably what you're looking for)
extended: 10 bytes (80bits) (maps to double when you compile to x64!)

在C++Builder中,似乎有一个模仿Delphi内置的货币类型的EDCOX1×0类。也许这有助于研究这个问题。


我找到了这个链接Borland C++原始数据类型。以HTML格式查看。

有一个长的双类型,容量为10字节。

这份文件提供了资料。不管怎样,你还是要读它。