3
double fat = 0.2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564;
cout<<fat<<endl;

结果是:

0.265465

应该长 7 个字符吗?我认为双倍可以容纳更多?

我也得到了“长双倍”的相同结果。

4

5 回答 5

10

您只是看到iostream.

要改进事情,请使用std::setprecision().

const int max_digits = std::numeric_limits<double>::digits10;

std::cout << std::setprecision(max_digits) << fat << std::endl;
于 2012-06-12T12:45:26.180 回答
3

用于std::setprecision(std::numeric_limits<double>::digits10)最大精度

std::cout << std::setprecision(std::numeric_limits<double>::digits10) << fat << std::endl;
于 2012-06-12T12:46:37.317 回答
3

这里有两个问题:

  • 您只能获得 7 个有效数字,因为您的 cout 流默认为 7 的精度,因为其他答案表明您可以将其增加到std::numeric_limits<double>::digits10

  • double 无论如何只能存储固定数量的精度,因此分配给 fat 的大多数数字将被丢弃(在大多数机器上,您最多可以将 15 个有效数字放入 double 中)

于 2012-06-12T12:49:58.597 回答
0

问题在于cout,它默认为一定的小数位数。您可以设置 cout 的精度,然后添加一个fixed给您所需的精度

cout.precision(15);
cout << fixed << fat << endl;
于 2012-06-12T12:46:29.687 回答
0

使用cout.precision().
或者,您也可以使用std::numeric_limits< double >and #include <limits>来获得浮点数或双精度数的最大精度。
请参阅此SO 帖子

于 2012-06-12T12:58:51.437 回答