cpp-cout-control
简介:介绍利用c++头文件
<iomanip>
和printf
等函数实现输出精度的控制。
1.利用<iomanip>
中的setprecision
函数实现输出精度控制
代码:
#include <iostream> #include <iomanip> using namespace std; int main(){ double a=1234.1234; double b=1.5555; cout<<a<<endl; //cout浮点数默认输出六位有效数字 cout<<setprecision(5)<<a<<endl; //设置输出有效数字5位,不包含小数点(不同于setw),并且不是直接截断,而是四舍五入; cout<<a<<endl; //在下一次更改setprecison的值之前,上一次设定的精度仍然有效; cout<<b<<endl; //在该输出精度小于设定精度时不生效; cout<<fixed<<setprecision(5)<<a<<endl; //输入fixed后设定精度改为小数位数,且小数位数不足时补0,四舍五入; cout<<b<<endl; //小数位数的修改仍然有效; return 0; }
输出结果:
1234.12 1234.1 1234.1 1.5555 1234.12340 1.55550
2.setw
和setfill
用法
#include <iostream> #include <iomanip> using namespace std; int main(){ double a=1234.1234; double b=1.5555; cout<<setw(5)<<a<<endl; //设置输出5位宽度(包括小数点),默认右对齐,setw只对紧接着的输出产生作用(对在前面的输出也不产生作用),且超过设定位数后输出默认位数; cout<<setw(10)<<b<<endl; //不足设定精度的默认用空格补齐; cout<<setfill('0')<<setw(10)<<b<<endl; //可使用setfill改变补齐字符,不能单独使用,需配合setw使用; return 0; }
输出结果:
1234.12 1.5555 00001.5555
3.printf输出精度控制
一般格式:
printf("格式控制字符串",输出列表);
格式控制字符串形式:
[标志][输出最小宽度][.精度][长度][类型]
类型
d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀 0) x,X 以十六进制形式输出无符号整数(不输出前缀 Ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数 e,E 以指数形式输出单、双精度实数 g,G 以%f 或%e 中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串
标志:
- 结果左对齐,右边填空格 - 输出符号(正号或负号) 空格 输出值为正时冠以空格,为负时冠以负号 # 对 c,s,d,u类无影响; 对 o 类,在输出时加前缀 o;对 x 类,在输出时加前缀 0x; 对 e,g,f 类当结果有小数时才给出小数点
输出位宽:
用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或 0。
精度:
精度格式符以“.”开头,后跟十进制整数。本项的意义是: 如果输出数字,则表示小数的位数; 如果输出的是字符,则表示输出字符的个数; 若实际位数大于所定义的精度数,则截去超过的部分。
长度:
长度格式符为 h,l 两种, h 表示按短整型量输出,l 表示按长整型量输出。
测试代码:
#include <stdio.h> int main(void) { char s[] = "abcdefg"; int i = 12345; double d = 123.45678; printf("%s\n", s); printf("%.*s\n", 3, s); printf("%#.8x\n", s); printf("%#p\n\n", s); printf("%d\n", i); printf("%*d\n", 10, i); printf("%0*d\n\n", 10, i); printf("%f\n", d); printf("%.*f\n", 3, d); printf("%20.10f\n", d); printf("%*.*f\n\n", 20, 10, d); return 0; }
输出结果:
abcdefg abc 0x456de280 0x7ffc456de280 12345 12345 0000012345 123.456780 123.457 123.4567800000 123.4567800000
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具