C++:保留小数点后几位

一、话不多说,直接上代码

	#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)

功能:控制浮点数显示的有效数字个数。

  1. 只写一次就可以
  2. 只是四舍五入修改了数字的显示方法,并不是修改原数字。如果12.212144数字本身改变,那就是两位有效数字变为 12,那从两位有效数字改为四位有效数字会变为 12.00,而不是12.21。
  3. 如果要保留的太多,是不会补上0的
  4. 如果小数点前的位数多于你要保留位数,则会使用科学计数法
#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
  1. 如果小数点最后一位是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
侵删

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值