在一些问题中经常会遇到一些关于精度的保留;

1.要求保留小数后n位小数:代码如下

#include<stdio.h>
int main()
{
	double num = 1.123456789;
	int n = 6;
	printf("%0.*lf\n",n,num);    //1.123457
	return 0;
}

注意,他会在小数点第n+1位四舍五入;

2.要求截取小数后n位,也就是不四舍五入:

#include<stdio.h>
#include<math.h> 
int main()
{
	double num = 1.123456789;
	int n = 6;
	double num1 = (int)(num * (pow(10,n))) / pow(10,n);
	printf("%0.*lf\n",n,num1);        //1.123456
	return 0;
}

3.介绍两个库函数,floor, ceil;

floor(num)    向下取整,也就是返回第一个小于等于num的整数

ceil(num)      向上取整,也就是返回第一个大于等于num的整数

#include<stdio.h>
#include<math.h>
int main()
{
	
	double num = 1.12345678;
	int a = floor(num);		//向下取整 
	int b = ceil(num);		//向上取整  
	printf("%d %d\n",a,b);	//输出 1 2 
}