70,038
社区成员
发帖
与我相关
我的任务
分享
double round(double d,unsigned p = 0) //d为原浮点数, p为精确位数
{
if(d==0)
return 0;
double n=0.01;
for(unsigned tmp=p;tmp>0;tmp--)
n/=10;
if(d>0)
d+=n;
else
d-=n;
//先转成字符串
char chs[10],data[200];
sprintf(chs,"%%.%uf",p);
sprintf(data,chs,d);
//再转成double
return atof(data);
}