Ответ 1
Функция roundf()
определяется C99, но MSVC реализует очень мало C99, поэтому она недоступна для компиляторов Microsoft.
Вы можете использовать этот:
float roundf(float x)
{
return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
}
Я обычно хорошо разбираюсь в подобных материалах, но на этот раз я не могу найти ничего.
Я загрузил некоторый исходный код из здесь и использует функцию под названием roundf
.
У меня уже есть #include <math.h>
, и как первая мысль добавлена #include <cmath>
, но все еще есть проблема. Я не могу понять, откуда происходит функция...
Есть ли альтернативная функция? Или кто-нибудь знает, откуда он появился, поэтому я могу включить заголовочный файл?
Функция roundf()
определяется C99, но MSVC реализует очень мало C99, поэтому она недоступна для компиляторов Microsoft.
Вы можете использовать этот:
float roundf(float x)
{
return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
}
Вы также можете использовать библиотеку 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