C++ 在输出的7个字符处进行双截断 double-fat=0.265465464548668468468655846565665545656465465489962236255646466818645656466456564; cout

C++ 在输出的7个字符处进行双截断 double-fat=0.265465464548668468468655846565665545656465465489962236255646466818645656466456564; cout,c++,C++,您只看到了iostream使用的默认精度 要改善情况,请使用 const int max_digits=std::numeric_limits::digits10; std::cout问题在于cout,它默认为某个小数位数。您可以设置cout的精度,然后添加一个fixed,以获得所需的精度 const int max_digits = std::numeric_limits<double>::digits10; std::cout << std::setprecisio

您只看到了
iostream
使用的默认精度

要改善情况,请使用

const int max_digits=std::numeric_limits::digits10;

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

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

std::cout << std::setprecision(max_digits) << fat << std::endl;
计算精度(15);

不能使用
std::setprecision(std::numeric\u limits::digits10)
获得最大精度

cout.precision(15);
cout << fixed << fat << endl;

std::cout这里有两个问题:

  • 您只能得到7个有效数字,因为您的cout流默认精度为7,因为其他答案表示您可以将其增加到
    std::numeric\u limits::digits10

  • double只能存储固定的精度,因此分配给fat的大部分数字都将被丢弃(在大多数机器上,一个double最多可以存储15个有效数字)

使用
cout.precision()

或者,您也可以使用
std::numeric_limits
\include
来获得浮点或双精度的最大精度。
看这个

cout.precision(15);
cout << fixed << fat << endl;
std::cout << std::setprecision(std::numeric_limits<double>::digits10) << fat << std::endl;