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

Best way to approximate in direction to zero in C++

本文关键字:最佳 方法 方向 C++      更新时间:2023-10-16

我很难解释清楚,但很简单。。

我在C++程序中有一个双重命名的值,如果它是正值,我想将其Floor;如果它是负值,则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;
}

我已经写了一个简单的代码,但我想知道是否有更简单的方法。

您可以使用std::trunc:

return std::trunc(value * precision) / precision;