C/C++输出那点小事
C/C++控制输出时有时有控制精度的问题,现总结如下(这时C写法更简单些):
1.setprecision(n) 默认设置输出的数字的总位数为n,包含整数和小数部分;
2.setiosflags(ios::fixed) 默认输出6位,必须与setprecision(n)配合使用,用来控制小数位数,不够补0;
3.resetiosflags(ios::fixed) 取消精度的设置。
直接上代码:
#include<iostream> #include<iomanip> // 精度控制头文件 using namespace std; int main() { const double value=12.3456789; // C输出方式printf()函数 printf("%lf\n",value); // double输出为 12.3456789:遵循IEEE标准的8字节(64位)的double能表示的有效数字的位数是:15~16 // C++输出方式cout函数 cout<<value<<endl; // 默认以6精度,所以输出为 12.3457 cout<<setprecision(4)<<value<<endl; // 改成4精度,所以输出为12.35 cout<<setprecision(8)<<value<<endl; // 改成8精度,所以输出为12.345679 // C语言控制精度方式: printf("%.4lf\n",value); // C++第一种方式: cout<<fixed<<setprecision(4)<<value<<endl; // 加了fixed意味着是固定点方式显示,所以这里的精度指的是小数位,输出为12.3457 cout<<value<<endl; // fixed和setprecision的作用还在,依然显示12.3457 cout.unsetf(ios::fixed); // 去掉了fixed,所以精度恢复成整个数值的有效位数,显示为12.35 cout<<value<<endl; cout.precision(6); // 恢复成原来的样子,输出为12.3457 cout<<value<<endl; // C++第二种方式: cout<<setiosflags(ios::fixed)<<setprecision(5)<<value<<endl; // 输出为12.34568,小数位数是5位,不够补0 cout<<resetiosflags(ios::fixed); // 取消精度的设置 system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】