在一些问题中经常会遇到一些关于精度的保留;
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
}