标题:setw、setfill、setprecision的使用问题,请高手解答,谢谢!
只看楼主
hibluebb55
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-24
 问题点数:0 回复次数:1 
setw、setfill、setprecision的使用问题,请高手解答,谢谢!
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{  
    int number=101,y;
    double z=123.456789,g=123.123123123;
    cout<<"decimal:"<<dec<<number<<endl;
    cout<<"hexadecimal:"<<hex<<number<<endl;
    cout<<"octal:"<<oct<<number<<endl;
    number=10;
    cout<<setfill('*')<<setw(2)<<number<<endl;
    cout<<setw(3)<<number<<endl;
    cout<<setw(4)<<number<<endl;
    cout<<setfill('+');
    cout<<setw(4)<<number<<endl;
     y=123456;
    cout<<setprecision(3)<<setw(3)<<y<<endl;
    cout<<setprecision(3)<<setw(3)<<z<<endl;
    cout<<setprecision(6)<<setw(3)<<z<<endl;
    cout<<setprecision(6)<<setw(3)<<g<<endl;
    cout<<setprecision(2)<<setw(3)<<g<<endl;
    cin.get();
    return 1;
    }

以上代码在DEV-C++ 5编译运行的结果(附图)让人费解,请高手具体解答一下在number赋值为10以后的显示结果,谢谢。

result.JPG (6.52 KB)
搜索更多相关主题的帖子: setfill setprecision setw 解答 
2008-11-24 23:43
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
得分:0 
cout<<setfill('*')<<setw(2)<<number<<endl;
由于之前设置了八进位的输出,所以输出为12,而setw(2)表示输出二位数,如果原数不足二位的用'*'填充,否则全部输出,这个规则下面沿用,直到下次调用setfill.
cout<<setw(3)<<number<<endl; //       输出三位数,不足用'*'填充   *12
cout<<setw(4)<<number<<endl; //       输出四位数,不足用'*'填充   **12
cout<<setprecision(3)<<setw(3)<<y<<endl;//同样使用八进制数,保留三位数(从高位算起),输出三位数,不足用"+"填充
cout<<setprecision(6)<<setw(3)<<z<<endl;//保留六位数,输出三位数,不足用"+"填充
cout<<setprecision(2)<<setw(3)<<g<<endl;//这个是由于二位输出不能表示百位,所以输出时用了科学计数法来表示.
总结:
setfill :  指定当数不足指定输出的位数时,多出来的高位用什么符号来代替的功能
setw:指定输出的位数,如果超过指定位数,则全部输出.
setprecision指定输出的精度,从高位起输出几个有效位.
2008-11-25 21:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-246077-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.248236 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved