比float或double更准确的数据类型? C ++

时间:2013-08-10 06:34:05

标签: c++ floating-point floating-accuracy decimal

C ++是否有比float或double更准确的数据类型,或者我是否只需要解决我的计算将会关闭的事实?

编辑:正如李斯特先生指出的那样,我的问题是精确度。当你将两个浮点数/双打一起添加时,这个数字有点令人沮丧,与手工计算相比,这个数字减少了一半。

1 个答案:

答案 0 :(得分:6)

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

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

您还可以调查arbitrary precision arithmetic的库。

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

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

您可能对此问题感兴趣:

long double (GCC specific) and __float128