Thank you, both of you for your answers.
@iMalc: I actually did find this paper. But I guess I was just too intimidated by the size of it and hoped I would get a simpler answer here... Sorry bout that . I ll try to plough my way through it again though.
While I do that, I noticed something that I wanted to run past everyone. I was wrong when I said that rounding off the floats didnt work and everything still printed out 6 digits. Turns out some of the numbers do get rounded off.. But some of them don't.
I ve posted the snippet of test code that I used.. U ll see that with any of the numbers that I ve used, (alternative numbers in comments) the number doesn't get rounded off to 4 digits. But most numbers with 6 decimal places do get rounded off though..
# include <stdio.h>
# include <math.h>
num1 = 16.822599; /* or 17.320499, 45.519199, 75.179802 */
/*32.324577 on the other hand gets rounded off as expected */
num1 = (float)( (int)(num1*10000 + 0.5) )/ 10000;
I guess that once I ve read through the literature, I ll see that all of these numbers have something common in their binary representation that doesn't allow them to be rounded off any more than this. Am i right?
So is there any standard method for dealing with such numbers..? Or pointers to reading material that I could go through would be great too..