double — лучший способ приблизиться в направлении нуля в переполнении стека

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

У меня есть двойное значение в моей программе на 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;
}

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

8

Решение

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

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

Другие решения

Других решений пока нет …