This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

sprintf error...?

I've noticed that sprintf seems to round the whole number part of doubles incorrectly. The below code loads string 's' with a value that seems to be rounded down to the closest 100 Hz. This causes my app grief, and I sure wish I could figure out how to use sprintf to print all the digits to the left of the decimal point correctly. Anyone have any advice on this question...?

#define CRYSTAL (20000000.0)
#define MUL (1401.0)
#define DIV (255.0)
#define MCK (CRYSTAL*(MUL+1.0)/(DIV*2.0))

double fClock = MCK; // debugger shows fClock as 54980392

sprintf(s,"%1.0f",fClock); // incorrectly loads s with "54980400"

The funny thing is that I can use sprintf to load strings with "%11.09f" as the format string, and it's right 9 places to the right of the decimal point. I just can't figure out why it can't handle the integer part of double precision floating point numbers as well.

Thanks,
Seadog.

0