0

C++ 是否有比 float 或 double 更准确的数据类型,还是我只需要接受我的计算将被关闭的事实?

编辑:正如李斯特先生所指出的,我的问题是关于精度。当您将两个浮点数/双精度数相加并且与手动计算相比,这个数字减少了一半时,这有点令人沮丧。

4

1 回答 1

6

在某些编译器和某些体系结构上,“long double”会给您比 double 更高的精度。如果您在 x86 平台上,则 x87 FPU 具有“扩展的”80 位浮点格式。当您使用“long double”类型时,Gcc 和 Borland 编译器会为您提供 80 位浮点值。请注意,Visual Studio 不支持这一点(MSVC 支持的最大值是双精度,64 位)。

有一种叫做“双双”的东西,它是一种实现四精度 128 位浮点的软件技术。您可以找到实现它的库。

您还可以研究用于任意精度算术的库。

对于某些计算,64 位整数是比 64 位浮点值更好的选择。

但是,如果您的问题是关于通用平台上当前 C++ 编译器中的内置类型,那么答案是您仅限于双精度(64 位浮点),而在 64 位平台上您有 64 位整数。如果您可以坚持使用 x86 并使用正确的编译器,您还可以使用 long double(80 位扩展精度)。

你可能对这个问题感兴趣:

long double(GCC 特定)和 __float128

于 2013-08-10T07:46:35.237 回答