On 9/24/07, Plato <zhangguoqiang@xxxxxxxxxx> wrote: > Hi! > I made such a program foo.c: > > #include <math.h> > > int main() > { > double bar=1.2; > printf("%f\n", round(bar)); > } > > Then compile and run: > [root@so41 tmp]# gcc foo.c -ofoo -lm > [root@so41 tmp]# ./foo > 0.000000 > > The result was obviously wrong. Then I add statement: > #include <math.h> > double round(double x); > > int main() > { > double bar=1.2; > printf("%f\n", round(bar)); > } > > Then compile and run: > [root@so41 tmp]# gcc foo.c -ofoo -lm > [root@so41 tmp]# ./foo > 1.000000 > > Now it's right. > > I wonder why function round not declared in math.h. Anyone have idea? It is available in C99 mode only (see <bits/mathcalls.h>): #ifdef __USE_ISOC99 __MATHCALLX (round,, (_Mdouble_ __x), (__const__)); To write fully portable code use floor() and ceil() instead. \Steve -- Steve Grägert <steve@xxxxxxxxxxxx> Internet: http://digitalether.de - To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html