Лучший способ приблизиться в направлении нуля в C ++ - PullRequest
0 голосов
/ 30 октября 2018

У меня есть некоторые проблемы, объясняющие ясно, но это довольно просто ..

В моей программе на 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;
}

Я написал простой код, но мне было интересно, есть ли более простой или / и способ сделать это.

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать std::trunc:

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