一道c++程序题?

来源:百度知道 编辑:UC知道 时间:2024/05/09 05:25:05
#include <iostream.h>
#include <iomanip.h>
main()
{
float x=3.1415926;

cout<<"\nx="<<setprecision(9)<<x;
cout<<"\nx="<<setw(10)<<setprecision(4)<<x;
}

我是用vc++6.0编译运行的
输出结果为:

x=3.14159
x= 3.142

问题1: setw()如果用于浮点型数据,小数点要算在宽度内吗?
问题2: 第二个cout输出为什么是这个结果?
上边的提问没有调整好距离,两个输出是
x=3.14159
x=(5个空格)3.142

问题3:setprecision()如果用于浮点型数据,小数点要算在精度内吗?换句话说要占1位吗

正确的结果应该是
x=3.14159
x= 3.142 press any key ```````
setw()如果用于浮点型数据,小数点要算在宽度内
在用浮点表示的输出中,setprecision(n)表示有效位数。
第2行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6 前面有六位 你设置了宽度为10 所以只能输出到3.142

3.142前面的5个空格显示不出 不好意思

是不占一个位的。

浮点型数据,小数点要不算在宽度内.

格式控制串“%m.nf”的意思是:将要输出的浮点型数据按照总宽度m位(其中小数点算一位),小数n位输出,如果总长度超过m位,则按照实际位数输出。默认右对齐,即位数不足m位则左补空格。若要左对齐,则前加‘-’:“%-m.n”

有两种情况
1:浮点数按浮点格式输出时,setprecision 指的是有效位数
2:浮点数按定点(fixed)或科学计算法(scientific)格式输出时,setprecision 指的是小数点的位数
setw()是限制宽度的,运行以后你可以在3.142 前面看到空格。