Ошибка C3861: "roundf": идентификатор не найден

Я обычно хорошо разбираюсь в подобных материалах, но на этот раз я не могу найти ничего.

Я загрузил некоторый исходный код из здесь и использует функцию под названием roundf.

У меня уже есть #include <math.h>, и как первая мысль добавлена ​​#include <cmath>, но все еще есть проблема. Я не могу понять, откуда происходит функция...

Есть ли альтернативная функция? Или кто-нибудь знает, откуда он появился, поэтому я могу включить заголовочный файл?

Ответ 1

Функция roundf() определяется C99, но MSVC реализует очень мало C99, поэтому она недоступна для компиляторов Microsoft.

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

float roundf(float x)
{
   return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
}

Ответ 2

Вы также можете использовать библиотеку boost:

#include <boost/math/special_functions/round.hpp>

const double a = boost::math::round(3.45); // = 3.0
const int b = boost::math::iround(3.45); // = 3