B.K*_*.K. 0 c++ floating-point decimal floating-accuracy
C++是否具有比float或double更准确的数据类型,或者我是否必须满足于我的计算将被关闭的事实?
编辑:正如李斯特先生指出的那样,我的问题是精确度.当你将两个浮点数/双打一起添加时,这个数字有点令人沮丧,与手工完成的计算相比,这个数字减少了一半.
在某些编译器和某些体系结构中,"long double"会给你提供比double更高的精度.如果您使用的是x86平台,则x87 FPU具有"扩展"的80位浮点格式.当您使用"long double"类型时,Gcc和Borland编译器会为您提供80位浮点值.请注意,Visual Studio不支持此功能(MSVC支持的最大值为双精度,64位).
有一种称为" 双倍 "的东西,它是一种用于实现四精度128位浮点的软件技术.您可以找到实现它的库.
您还可以调查库以进行任意精度算术.
对于某些计算,64位整数是比64位浮点值更好的选择.
但是如果你的问题是关于常见平台上当前C++编译器的内置类型,那么答案是你只能加倍(64位浮点),而在64位平台上你有64位整数.如果您坚持使用x86并使用正确的编译器,您也可以使用长双精度(80位扩展精度).
您可能对此问题感兴趣:
long double(特定于GCC)和__float128