c语言round函数使用问题

round 是实现四舍五入的函数,但我在使用的时候遇到点问题,编译器一直报错undefined reference to `round'

半天都找不到原因,终于搞清楚了,记在这里,供遇到相同问题的朋友参考。

首先给出函数原型

double round(
   double x
);
float round(
   float x
);  // C++ only
long double round(
   long double x
);  // C++ only
float roundf(
   float x
);
long double roundl(
   long double x
);

使用示例

// crt_round.c
// Build with: cl /W3 /Tc crt_round.c
// This example displays the rounded results of
// the floating-point values 2.499999, -2.499999,
// 2.8, -2.8, 2.5 and -2.5.

#include 
#include 

int main( void )
{
   double x = 2.499999;
   float y = 2.8f;
   long double z = 2.5;

   printf("round(%f) is %.0f\n", x, round(x));
   printf("round(%f) is %.0f\n", -x, round(-x));
   printf("roundf(%f) is %.0f\n", y, roundf(y));
   printf("roundf(%f) is %.0f\n", -y, roundf(-y));
   printf("roundl(%Lf) is %.0Lf\n", z, roundl(z));
   printf("roundl(%Lf) is %.0Lf\n", -z, roundl(-z));
}

输出

round(2.499999) is 2
round(-2.499999) is -2
roundf(2.800000) is 3
roundf(-2.800000) is -3
roundl(2.500000) is 3
roundl(-2.500000) is -3

但是我自己在用这个函数的时候出现问题:

编译器报错  undefined reference to `round'

在stack overflow上面查了一下,原来是因为没有把数学库添加进去。

c语言round函数使用问题_第1张图片

c语言round函数使用问题_第2张图片

如图,在cmake中添加这个库就可以了。

你可能感兴趣的:(C)