C# 中有一种类型称为 decimal
(System.Decimal 结构)。我已经发现了一些信息,显示它在某些情况下比 float
和 double
类型更好:
- StackOverflow - double-precision-problems-on-net
- StackOverflow - how-to-make-doubles-work-properly-c-sharp
在 Borland C++ Builder 程序中是否有类似的类型?
C# 中有一种类型称为 decimal
(System.Decimal 结构)。我已经发现了一些信息,显示它在某些情况下比 float
和 double
类型更好:
在 Borland C++ Builder 程序中是否有类似的类型?
decimal
类型,即.NET的System.Decimal
类型,是一种浮点数,存储为十进制而不是二进制编码。而float
和double
是更典型的二进制浮点数。也就是说,double
存储为+/- x * 2^y
,而decimal
存储为+/- x * 10 ^ y
。因此,它在金融数据等通常以x * 10^-2
表示的数据方面表现更好。IEEE标准754(浮点数运算标准)将其称为“十进制浮点数”运算,并定义了32位和64位版本。std::decimal
命名空间中,称为std::decimal::decimal32
和std::decimal::decimal64
,在<decimal>
头文件中。如果Borland C++ Builder有这样的类型,则会在那里找到它。GNU的C++库包括此头文件,但据我所知,它实际上还不是标准的一部分,因此BCB可能没有它。如果是这种情况,则需要使用第三方库。@dash提供的英特尔Decimal Floating Point库是最知名的库,但如果您需要其他库,则可以通过Google搜索IEEE 754 Decimal
来查找。这些是 Delphi 中可用的浮点类型:
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!)
System::Currency
类,它模仿了Delphi内置的货币类型。也许研究一下这个会有所帮助。currency
类型的范围是多少? - kokbiralong double
进行更精确的计算,但我想评估一个以10为底的解决方案... - kokbira