I'm getting unexpected results from the round() and roundf() functions in the math.h library.  Here is the sample code:
#include <stdio.h>
#include <math.h>
int main(void)
{
    float f;
    double d;
    /* Note man page says that roundf() returns a float
       and round() returns a double */
    f = roundf(1.2);
    d = round(1.2);
    printf("%f\n", f);
    printf("%lf\n", d);
    return 0;
}
When I complie and run the program I get:
gcc -lm round.c
./a.out
288.000000
524288.000000
Wierd huh?
Update: Along with the answers I've confirmed that the code works properly on a newer complier. (I think %lf is not the correct printf specifier but that doesn't affect the end result in this case.) I'll need to figure out why may compiler is behaving this way because I have running code that uses round() and has been compiler on the same machine. I'll update the post when I figure it out.
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/2.95.3/specs
gcc version 2.95.3 20010315 (release)