在C++中逼近零方向的最佳方法

ton*_*497 8 c++ double approximation

我有一些麻烦解释清楚,但它很简单..

我在我的C++程序中有一个双重命名值,如果它是一个正值,我想要它,如果它是负值,我想要Ceil,精度由外部变量给出.

一个例子:

精度为1000的值为0.2659,因此近似值为0.265,
值为-0.2659,因此近似值为-0.265

我写了一个简单的代码,但我想知道是否有一个更简单或/和方式来做它.

到目前为止我所拥有的:

void NodeImpl::approximation(double& value, const double& precision)
{
    if (value > 0.0)
    {
        value = std::floor(value * precision);
    }
    else
    {
        value = std::ceil(value * precision);
    }
    value /= precision;
}
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的代码,但我想知道是否有一个更简单或/和方式来做它.

eer*_*ika 9

你可以使用std::trunc:

return std::trunc(value * precision) / precision;
Run Code Online (Sandbox Code Playgroud)