对一个双精度的数,我如何把它四舍五入为保留2位小数的数

解决方案 »

  1.   

    double d=3.1253...
    d+=0.005
      

  2.   

    只要两位小数话样做:
    double d = 3.1253
    d *= 100;
    d = ( d + 0.5 ) / 100.0;
      

  3.   

    那两位给的方法,我认为根本不对,最终的结果还都是有很多为小树
    我觉得应该这样:
    double d = 3.1253
    d *= 100;
    d = ( d + 0.5 ) / 100.0;sprintf(str, "%4.2f", d);
    d= atof(str);
      

  4.   

    double diaoyong(double d)
    { double x;
      
     int a;
     d *= 100;
     d=( d + 0.5 ) / 100;
     d*=100;
     a=d;
     d=a;
     d=d/100.0;
     x=d; return  x;
    cout<<x<<'\n'<<a;
    }兄弟你试 试 看看行行不行我是对二楼的补充
      

  5.   

    怎么会有现成的函数呢?
    SEA373的很不错的,你用用吧
      

  6.   

    有个问题,如果是负数 -3.009 那么四舍五入后是 -3.01 还是 -3.00?
    如果是 -3.01应该是:double d=3.1253;
    int sig = (d>=0) ? 1 : -1;
    int dat = (int)(fabs(d) * 100 + 0.5);
    d = dat / 100;
      

  7.   

    忘了  ^-^
    d *= sig;
      

  8.   

    to handpoint(小新): 不错 你说的我没考虑过 怎么会出现这样的情况的啊
      

  9.   

    去论坛查了查大家比较推崇
    #include "math.h"
     double round(double num , int i)
    {return int(num*pow(10,i)+0.5)/float(pow(10,i));}
    num要进行四舍五入的数,i保留位数