提问者:小点点

如何使用COUT以全精度打印双倍值?


所以我得到了我最后一个问题的答案(我不知道为什么我没有想到这个)。 我正在使用cout打印一个double,在我意想不到的情况下,它变得四舍五入。 如何使cout使用全精度打印double


共3个答案

匿名用户

您可以直接在std::cout上设置精度,并使用std::fixed格式说明符。

double d = 3.14159265358979;
cout.precision(17);
cout << "Pi: " << fixed << d << endl;

您可以#include获得浮点或双精度的最大精度。

#include <limits>

typedef std::numeric_limits< double > dbl;

double d = 3.14159265358979;
cout.precision(dbl::max_digits10);
cout << "Pi: " << d << endl;

匿名用户

使用std::setprecision:

std::cout << std::setprecision (15) << 3.14159265358979 << std::endl;

匿名用户

下面是我要使用的:

std::cout << std::setprecision (std::numeric_limits<double>::digits10 + 1)
          << 3.14159265358979
          << std::endl;

基本上,limits包具有所有内置类型的特征。
浮点数(float/double/long double)的特征之一是digits10属性。 这定义了一个以10为基数的浮点数的精确度(我忘了确切的术语)。

有关其他属性的详细信息,请参阅:http://www.cplusplus.com/reference/std/limits/numeric_limits.html