I have a segment of code that takes an integral float and divides it by ten however many times it's necessary to make it less than one (therefore moving all digits to the right of the decimal). For some reason, I can't get it to work correctly. Here are two different approaches, neither of which works:
Code:
/*printfs added for testing*/
printf("decval is %f\n", decval);
while((decval /= 10) > 0)
;
printf("decval is %f\n", decval);
This one, when tested with a decval of five, prints the following:
5.000000
0.000000
I thought that the assignment in the condition might have been messing things up, so I tried the following:
Code:
/*printfs added for testing*/
printf("decval is %f\n", decval);
while((decval /= 10) && decval > 0)
;
printf("decval is %f\n", decval);
This did the exact same thing.
I then thought that maybe there was something wrong with float division, so I changed the first printf to print decval/10, which showed the correct answer of 0.500000... but the while loop still changed it to 0.000000.
What is it that I'm missing here? I am relatively new to C, but I'm surprised to be having these problems with seemingly simple float division...
Thanks,
Matt