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