在代码块中使用double可以得到int输出

时间:2016-02-05 10:11:30

标签: c++

#include <iostream> using namespace std;
int main() 
{  
 double x=5.0,y=4.0,z;  
 z=x+y;     
 cout<<x<<endl<<y<<endl<<z;   
 return 0;
} 

上面的程序给出了以下输出: 五 4 9 当我声明变量为double,甚至z为double时,为什么我将输出作为整数值(9)??

2 个答案:

答案 0 :(得分:1)

cout在这里很有帮助:如果double值是一个整数,那么默认情况下,它不会显示小数分隔符,后跟任意数量的零。

如果您希望显示与您平台上特定double的精度相同的数字,那么请使用

行中的内容
cout.precision(std::numeric_limits<double>::max_digits10);
cout << fixed << x << endl;

答案 1 :(得分:0)

浮点后没有数字的浮点数默认打印为整数。

要始终显示浮点数,请使用setiosflags(ios::showpoint)

您可以将其与fixedsetprecision(n) I / O标志组合,以限制浮点后打印的位数。例如:

double d = 5.0;
cout << setiosflags(ios::showpoint) << d << endl; // prints 5.00000
cout << setiosflags(ios::showpoint) << fixed << setprecision(1)
     << d << endl; // prints 5.0