C++中setiosflags(ios::fixed)与setprecision( 1 )的用法
setiosflags( ios::fixed ),头文件为:include<iomanip>.
在遇到要计算浮点数且希望能控制其输出、精度、小数点后的位数等时,用setiosflags( ios::fixed )来控制。
1. setprecision( )
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。setprecision(n)就是输出n个数,会有四舍五入。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main() {
double s=20.7843000;
cout << s << endl;
cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;
cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;
cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;
cout << "setprecision( 4 )"<< setprecision( 4 )<< s << endl;
cout << "setprecision( 5 )"<< setprecision( 5 )<< s << endl;
cout << "setprecision( 6 )"<< setprecision( 6 )<< s << endl;
cout << "setprecision( 7 )"<< setprecision( 7 )<< s << endl;
cout << "setprecision( 8 )"<< setprecision( 8 )<< s << endl;
return 0;
}
输出:
20.7843
setprecision( 1 )2e+01
setprecision( 2 )21
setprecision( 3 )20.8
setprecision( 4 )20.78
setprecision( 5 )20.784
setprecision( 6 )20.7843
setprecision( 7 )20.7843
setprecision( 8 )20.7843
可见,小数部分末尾为0时,是输不出来的!
2. setiosflags(ios::fixed)
setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main() {
double s=20.7843000;
cout << s << endl;
cout << setiosflags( ios::fixed );
cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;
cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;
cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;
cout << "setprecision( 4 )"<< setprecision( 4 )<< s << endl;
cout << "setprecision( 5 )"<< setprecision( 5 )<< s << endl;
cout << "setprecision( 6 )"<< setprecision( 6 )<< s << endl;
cout << "setprecision( 7 )"<< setprecision( 7 )<< s << endl;
cout << "setprecision( 8 )"<< setprecision( 8 )<< s << endl;
return 0;
}
输出:
20.7843
setprecision( 1 )20.8
setprecision( 2 )20.78
setprecision( 3 )20.784
setprecision( 4 )20.7843
setprecision( 5 )20.78430
setprecision( 6 )20.784300
setprecision( 7 )20.7843000
setprecision( 8 )20.78430000
结果全部正确。
3. setiosflags(ios::fixed|ios::showpoint)
当setprecision( )的精度为0的时候,有showpoint,结果就会显示小数点,没showpoint,就不显示小数点。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main() {
double s=20.7843000;
cout << s << endl;
cout << setiosflags( ios::fixed);
cout << "setprecision( 0 )"<< setprecision( 0 )<< s << endl;
cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;
cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;
cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;
cout << setiosflags( ios::fixed|ios::showpoint );
cout << "setprecision( 0 )"<< setprecision( 0 )<< s << endl;
cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;
cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;
cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;
return 0;
}
输出:
20.7843
setprecision( 0 )21
setprecision( 1 )20.8
setprecision( 2 )20.78
setprecision( 3 )20.784
setprecision( 0 )21.
setprecision( 1 )20.8
setprecision( 2 )20.78
setprecision( 3 )20.784
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类