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

Float point Assignment Problem

I am using Silicon Labs C8051F344 controller and for one of my project the floating point precision required is 6 digits after decimal point. I am now facing with the following problem:

#include <C8051F340.H>

float idata flt;
void main(void)
{
  PCA0MD &= ~0x40;     // (Disable Watchdog timer)
  flt = 105563.578453; // Float value assignment to flt
  while(1);
}

Above is just a sample program to test the value of float variable "flt".
I have observed the value of flt as

105563.6 (got rounded off) in debug mode against the expected 105563.578453.


What's the problem here ????

I have also tried some more values.

flt= 216.416736;_____ Value at Debug-> 216.4167
flt= 2164.167365;____ Value at Debug-> 2164.167
flt= 2164167.365214;_ Value at Debug-> 2164167
flt= 2164.300214;____ Value at Debug-> 2164.3

Now float is supposed to have a precision of 6 digits after decimal point. But the assignment is happening strangely.
I searched many of the existing threads but didn't find any convincing answer. Any guidance in the matter would be of great help.
Thank you in advance.
Regards,
Jaydeep

Parents Reply Children