double ld = 0.299999999999999990009;
被截断为0.29999999999999999
如何从浮动类型中获得更多精度?
是否有一个包含更大值的类?
答案 0 :(得分:7)
任意大小浮点运算的Gnu MP library显然has support。我建议尝试一下,因为GMP是最快的通用任意大小的算术库之一。它非常稳定,具有全面的C接口,以及为许多编译器编译的C ++包装器和二进制文件。
GNU MPFR库基于GMP,并添加了大量以任意精度工作的特殊函数。
答案 1 :(得分:3)
有long double
,但在 MSVS 中,它是double
的同义词(特定于平台)。
您可能还想尝试一些高精度数学库,例如: HPA.
答案 2 :(得分:1)
如果你真的需要更高的精度,那么你需要一个多精度库。有免费的库,如GMP(LGPL软件)
答案 3 :(得分:0)
double本身实际上足够大(1×10^−37 → 1×10^37
)并且还有很长的double和long float
我认为它被截断了,因为你没有设置std :: cout的精度
#include <iomanip>
float yourfloat;
cout << fixed << setprecision(lengthoftheprecision) << yourfloat;