一、话不多说,直接上代码
#include <iomanip> //不要忘了头文件
#define PI acos(-1)
cout << PI << endl; //3.14159
double num = 0.202044;
//第一种写法:设置一次,即可生效
cout << setiosflags(ios::fixed) << setprecision(8)<<PI<<endl; //3.14159265
cout << num << endl; //0.20204400
//第二种写法:设置一次,即可生效
cout.setf(ios::fixed);
cout<<setprecision(8)<<PI<<endl; //3.14159265
cout << num << endl; //0.20204400
//第三种写法:设置一次,即可生效
cout << fixed << setprecision(8) << PI << endl; //3.14159265
cout << num << endl; //0.20204400
二、setprecision(n)
功能:控制浮点数显示的有效数字
个数。
- 只写一次就可以
- 只是四舍五入修改了数字的显示方法,并不是修改原数字。如果12.212144数字本身改变,那就是两位有效数字变为 12,那从两位有效数字改为四位有效数字会变为 12.00,而不是12.21。
- 如果要保留的太多,是不会补上0的
- 如果小数点前的位数多于你要保留位数,则会使用科学计数法
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double num = 12.212144;
cout << setprecision(2) << num << endl;
cout << num << endl;
cout << setprecision(4) << num << endl;
cout << setprecision(6) << num << endl;
cout << setprecision(7) << num << endl;
cout << setprecision(8) << num << endl;
cout << setprecision(10) << num << endl;
cout << setprecision(1) << num << endl;
return 0;
}
//结果:
12
12
12.21
12.2121
12.21214
12.212144
12.212144
1e+01
- 如果小数点最后一位是0,不显示最后一位
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double num = 12.202044;
cout << setprecision(2) << num << endl;
cout << num << endl;
cout << setprecision(4) << num << endl;
cout << setprecision(6) << num << endl;
cout << setprecision(7) << num << endl;
cout << setprecision(8) << num << endl;
cout << setprecision(10) << num << endl;
cout << setprecision(1) << num << endl;
return 0;
}
//结果
12
12
12.2
12.202
12.20204
12.202044
12.202044
1e+01
三、fixed
setprecision(n)和fixed合用的话可以控制小数点后有几位。
只要加上以下任意一个语句就可以。
cout<<setiosflags(ios::fixed);
cout.setf(ios::fixed);
cout<<fixed;
fixed使得如果要保留的位数多于数字原来的小数,就会补上0。
用法见第一部分。
参考:
文章1
侵删