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

解决方案 »

  1.   

    若精确到小数点一位,则(int)(XX*10+0.5)
    若精确到小数点二位,则(int)(XX* 100 + 0.5)
    依次类推
      

  2.   

    d1 = ((int)((d1+0.005)*100))/100.0
      

  3.   

    zeroweb(低手低手低低手) 兄,我也这样试过,但不行,d1=2.27
      

  4.   

    再检查一下,
    2.275+0.005 = 2.280
    2.280*100 = 228.0
    (int)228.0 = 228
    228/100.0 = 2.280000
    最后在输出时限制一下格式肯定应该可以的呀!
      

  5.   

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

  6.   

    dl = ((int)((((int)(dl*1000)/1000.0)+0.006)*100))/100.0;
      

  7.   

    d1 = ((int)((d1+0.005)*100))/100;
      

  8.   

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

  9.   

    再送你一个四舍五入的函数
    double Round( double db, int n) //n表示保留几位小数
    {
    char szParm[10];
    char szdb[40];
    sprintf(szParm,"%%20.%df",n);
    sprintf(szdb,szParm,db);
    return atof(szdb);
    }