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.
"OUCH!!" Er, yes, sorry, I hadn't had enough coffee this morning. I would guess that tech support are more likely to be correct than the manual and 64 bit doubles are not supported, but I'd be most interested to hear the result of your test.