1-2在经过自己写的四舍五入后就变成-0.99(取后两位)
return static_cast<double>( static_cast<int>(( dValue ) * 100 + 0.5 )) / 100;
请问怎么解决?

解决方案 »

  1.   

    int CBase::round(double aa)//四舍五入
    {
    double bb;
    int result;
    bb = aa - (int)aa;
    if(bb>0)
    {
    if((1 - bb)>bb)
    {
    result = (int)aa;
    return result;
    }
    else
    {
    result = (int)aa+1;
    return result;
    }
    }
    else if(bb<0)
    {
    if((1+bb)>-bb)
    {
    result = (int)aa;
    return result;
    }
    else
    {
    result = (int)aa-1;
    return result;
    }
    }
    else
    {
    return (int)aa;
    }
    }你参考一下
      

  2.   

    谢谢FLW
    我找到一个简单方法
    double MyRound(double dValue)
    {
    double epsilon = 0.000001;
    if (( dValue - 0 ) > epsilon )
    {
    return static_cast<double>
    (static_cast<int>(( dValue ) * 100 + 0.5 )) / 100;
    }
    else
    {
    return static_cast<double>
    (static_cast<int>(( dValue ) * 100 - 0.5 )) / 100;
    }
    }