错误C3861:'roundf':找不到标识符

时间:2013-11-09 23:38:21

标签: c++

我通常擅长谷歌搜索这样的东西,但这次我似乎找不到任何东西。

我从here下载了一些源代码,它使用了一个名为roundf的函数。

我已经#include <math.h>并且首先考虑添加#include <cmath>但仍有问题。我似乎无法找出函数的起源......

是否有替代功能?或者有人知道它来自哪里,所以我可以包含头文件吗?

2 个答案:

答案 0 :(得分:18)

roundf()函数由C99定义,但MSVC实现的C99很少,因此Microsoft编译器无法使用它。

你可以使用这个:

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

答案 1 :(得分:1)

您也可以使用升级库:

#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