double d1=2.275,我想四舍五入两位小数,得到d1=2.28,怎么办

解决方案 »

  1.   

    dl = (double)((int)((dl + 0.05) * 100) / 100);
      

  2.   

    dl = (double)((int)((dl + 0.005) * 100) / 100);
      

  3.   

    dl = (double)((int)((dl + 0.005) * 100) / 100.0);
      

  4.   

    #include "math.h"double d1,d2;
    d1=2.275;
    d2 = (floor((d1 + 0.01)*100 ))/100;
      

  5.   

    (d1+0.005)*100 得到的其实是 227.99999......
    用int截断后得到的还是227,建议:
    d1 = ((int)((d1+0.0051)*100))/100.0
      

  6.   

    double d1=2.275;
    CString str;
    str.Format( "%5.2f", d1 );
    d1 = atof( str ); //结果就是2.28
      

  7.   

    若精确到小数点一位,则(int)(XX*10+0.5)
    若精确到小数点二位,则(int)(XX* 100 + 0.5)
    依次类推......然后将所得数分别/10或/100 .......
      

  8.   

    RoundOff(float data, int round)//data:要保留的数据,round:要保留的位数
    {
    int i = 0;
    int roundoff = 1;
    for(i=0; i<round; i++)
    {
    roundoff *= 10;
    }
    data *= roundoff; if(data < 0)
    {
    data -= 0.5;
    }
    else
    {
    data += 0.5;
    } data = (float)(int)data;

    return((float)data / roundoff);
    }
      

  9.   

    dl = (double)((int)(dl*100+0.5) / 100.0);
      

  10.   

    i agree with sans(sans)
      

  11.   

    你是不是在做数据库项目是碰到这个问题的?用sans(sans)的方法吧。
      

  12.   

    dl = (double)((int)((dl + 0.005) * 100) / 100.0);
    我经常用,没错的