如何在Visual C ++中表示巨大的浮点数

时间:2011-02-16 21:28:24

标签: c++ visual-c++

double ld = 0.299999999999999990009;

被截断为0.29999999999999999

如何从浮动类型中获得更多精度?

是否有一个包含更大值的类?

4 个答案:

答案 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;