怎样将一个单精度数四舍五入?

解决方案 »

  1.   

    double round(double x)
    {
    double y=floor(x);
    if(x-y>=0.5)return y+1;
    else return y;
    }
      

  2.   

    楼上的round函数是你怎定义的?
      

  3.   

    c++中可能有专门的函数
    c语言中要知己写了。
    FLOAT Round( FLOAT dRoundValue, INT nRoundPos )
    {
       char szFormat[250];
       char szFloatBuf[250];   sprintf( szFormat, "%%0.%df", nRoundPos );//这里免去nRoundPos合法性判断
       sprintf( szFloatBuf, szFormat, dRoundValue );
       return atof( szFloatBuf );
    }
      

  4.   


     frank_zhao(细胞自动机) 位(格式化一下)。---------------------------------
    采用您的方法怎么会出问题?
    float f,fK,fKSpace;
    int i;
    f=fK+(i-5.5)*fKSpace;//调试到此时f=4.6000
    f=f+0.005;
    CString s;
    s.Format("%.2f",f);
    f=atof(s);//调试到此f=4.61,按照4.6000+0.005=4.605然后截取两位应该为4.60才对呀