C++ 保留N位小数的几种方法(setprecision(n)的部分用法总结)
C++的保留小数常用setprecision(n)来实现,n就是保留n位小数。
首先一定不要忘了头文件#include <iomanip>
(很重要)
方法1:
语句只需要写一次setprecision(n)设置精度就够了
#include <iomanip>
...
cout<<fixed<<setprecision(n)<<shu; //shu就是你要保留小数的数字;
...
方法2:
同样只需写一次setprecision(n)设置精度就够了
#include <iomanip>
...
cout<<setiosflags(ios::fixed)<<setprecision(n)<<shu;//shu还是要保留的数字
...
方法3:
还是只需setprecision(n)设置精度一次就够了
#include <iomanip>
...
cout.setf(ios::fixed);
cout<<setprecision(n)<<shu;//shu同样是你需要保留小数的数字
往深了谈谈,setprecision(n)的功能:控制浮点数显示的有效数字个数
定义了一次之后的数字都会保留,例如
#include <iostream>
#include <iomanip> //必备的头文件
using namespace std;
int main()
{
double s=66.345;
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout<<s<<endl; //输出66.35
float pi=3.1415926;
cout<<pi<<endl; //输出3.14
return 0;
}
但注意setprecision(n)单独使用时只有显示有效数字的功能,并不是直接显示保留位数
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double s=66.345;
cout<<setprecision(2)<<s; //输出66而不是66.35
return 0;
}
和fixed合用才会是保留n位小数而括号里的n就是几
cout<<fixed;
cout.setf(ios::fixed);
cout<<setiosflags(ios::fixed);
这几个方式如果它的小数位数不够还会自动补0。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double s=66.345;
cout.setf(ios::fixed);
cout<<setprecision(2)<<s<<endl; //输出66.34,不是没四舍五入,而是没显示后面的5
cout<<setprecision(3)<<s<<endl; //输出66.345
cout<<setprecision(5)<<s<<endl; //输出66.34500
return 0;
}
初学者,见解浅陋,请多多指教