Are there any “type” on Borland C++ Builder like “decimal” from C#?
在C中,有一个名为decimal的类型(system.decimal结构)。我发现的信息表明,在某些情况下,它比float和double类型更好:
- stackoverflow-网络上的双精度问题
- StackOverflow-如何制作-双打-正常工作-C-Sharp
Borland C++ Builder程序有类似的类型吗?
- Intel有一个库软件。intel.com/en-us/articles/…实现了IEEE754-2008十进制浮点算术规范
- @Dash,你提供的链接和Intel库似乎很有希望。对于需要高精度的人来说,这是值得一试的。
- 代替使用过时的Borland C++,可以迁移到C++.NET并使用Stask.Dimple吗?当然,在给定输入的情况下,您可以在.NET中创建一个小程序。
- @理论上,我是被迫迁移到.NET的:)但我非常熟悉BCB…我想知道谁赢了这个案子:.net对Borland
- @科比拉,博兰正在努力跟上微软。只有Linux、PHP和Apache工具集可以与Microsoft竞争。我建议你尽快迁移到.NET,无论如何你都必须迁移。至少,你不必处理这个小数问题。
c,.net的System.Decimal类型中的decimal类型只是一个浮点数字,存储为base-10而不是base-2编码。float和double是更典型的基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时,如果出于某种原因需要,应该会找到其他库。
- 很好的答案是+1
- @cthulhu的答案在哪里????
- @科比拉·迈克尔的阿凡达看起来像是一张来自洛夫克拉夫特小说(有时被称为《反恐组》)的全面好人的照片。但他不是很好。
以下是可以在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类。也许这有助于研究这个问题。
- 有趣。你知道它是否使用base-10来存储值吗?那么currency型的范围呢?
我找到了这个链接Borland C++原始数据类型。以HTML格式查看。
有一个长的双类型,容量为10字节。
这份文件提供了资料。不管怎样,你还是要读它。
- 非常有用,但我正在寻找一种方法来使用存储在BASE-10而不是BASE-2上的浮点值,以查看某些程序上的某些计算是否会变得更精确…
- 例如,我可以用long double进行更精确的计算,但我想用base-10…
- 如果我正确理解Borland的文档,Borland Float和Double类型将使用Base 10而不是Base 2。