#include <stdlib.h>
#include <math.h>
/* 保留N为算法: 利用的是Double to int 时是否有一个进位处理: a = (int)(pow(10,N)*a + 0.5)/pow(10,N) */
/* 例如: a = (int)(1000.0 * a + 0.5) / 1000.0 [N = 3时]*/
void near_to_cut(double a,const int N)
{
a = (int)(pow(10,N)*a + 0.5)/pow(10,N); // >5 时+0.5会有个进位处理+1
printf("保留的位数%d ,结果 %lf\n",N,a);
}
int main(int argc, char *argv[])
{
double a_in;
int n;
printf("输入要保留的位数N:");
scanf("%d",&n);
printf("输入一个数:");
scanf("%lf",&a_in);
near_to_cut(a_in,n);
return 0;
}
转载于:https://my.oschina.net/u/559642/blog/100881