double fat = 0.2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564;
cout<<fat<<endl;
结果是:
0.265465
应该长 7 个字符吗?我认为双倍可以容纳更多?
我也得到了“长双倍”的相同结果。
double fat = 0.2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564;
cout<<fat<<endl;
结果是:
0.265465
应该长 7 个字符吗?我认为双倍可以容纳更多?
我也得到了“长双倍”的相同结果。
您只是看到iostream
.
要改进事情,请使用std::setprecision()
.
const int max_digits = std::numeric_limits<double>::digits10;
std::cout << std::setprecision(max_digits) << fat << std::endl;
用于std::setprecision(std::numeric_limits<double>::digits10)
最大精度
std::cout << std::setprecision(std::numeric_limits<double>::digits10) << fat << std::endl;
这里有两个问题:
您只能获得 7 个有效数字,因为您的 cout 流默认为 7 的精度,因为其他答案表明您可以将其增加到std::numeric_limits<double>::digits10
double 无论如何只能存储固定数量的精度,因此分配给 fat 的大多数数字将被丢弃(在大多数机器上,您最多可以将 15 个有效数字放入 double 中)
问题在于cout
,它默认为一定的小数位数。您可以设置 cout 的精度,然后添加一个fixed
给您所需的精度
cout.precision(15);
cout << fixed << fat << endl;
使用cout.precision()
.
或者,您也可以使用std::numeric_limits< double >
and #include <limits>
来获得浮点数或双精度数的最大精度。
请参阅此SO 帖子。