printf()函数可以实现保留指定位小数的功能,但不一定能实现四舍五入,具体来说,就是小于5时舍,大于5时入,等于5时可能舍也可能入。
printf("%.2f %.2f %.2f",1.234,1.235,1.236);
输出结果可能为1.23 1.24 1.24
,也可能为1.23 1.23 1.24
。因此这种方法不保险。
下面给出四舍五入保留指定位数的函数:
double func(double num,int n)//num:要保留的小数 n:要保留的位数
{
int shift=1;
for(int i=1;i<=n;i++)shift*=10;//将保留的位数n转化为10的n次幂,比如保留3位小数,就转化为10^3=1000
if(num>0)return floor(num*shift+0.5)/shift;//正数,向下取整
else return ceil(num*shift-0.5)/shift;//负数,向上取整
}