C++程序设计基本问题

来源:百度知道 编辑:UC知道 时间:2024/07/06 19:47:21
double fNum=12.3456789;
cout.width(10);
cout<<fNue<<endl;
cout<<cout.precision(4)<<endl;
cout<<fNue<<endl;
解释一下,输出的结果。

double fNum=12.3456789;
cout.width(10); // 这里设置了一下宽度是10
cout<<fNum<<endl; // 这里直接输出一个浮点数,但是默认的精度是6,所以会截断。 所以输出 12.3457 前面有4个空格
cout<<cout.precision(4)<<endl; // 这里我想你是用错了,这个成了一个函数调用,返回值是原来的精度,看看其源码:
streamsize __CLR_OR_THIS_CALL precision(streamsize _Newprecision)
{ // set precision to argument
streamsize _Oldprecision = _Prec;
_Prec = _Newprecision;
return (_Oldprecision);
} 所以这里输出原来的精度6

cout<<fNum<<endl; //设置精度4成功,所以输出12.35 四舍五入来着。

关于精度设置,貌似我们一般都不这么用,呵呵。

double fNue=12.3456789;
cout.width(10); // 设置了一下宽度是10
cout<<fNue<<endl; // 输出浮点数fNue,默认的精度是6, 所以输出 12.3457 前面有4个空格
cout<<cout.precision(4)<<endl; // 设置精度为4,但是cout.precision(4)的返回值是设置之前的精度,因为之前为6,所以返回为6,输出仍为6.
cout<<fNue<<endl; //因为前面设置精度为4,所以输出12.35
cout<<cout.precision(8)<<endl;//如果添加这么一句,LZ想想应该输出什么?因为之前精度是4,所以输出应该是4.LZ可以自己调试一下。