lcd_gotoxy(1, 2);
printf(lcd_putc, "fstr: %s", fstr); the value pinted is 100.12
lcd_gotoxy(1, 3);
printf(lcd_putc, "fvalue: %f", fvalue); the value printed is 100.11
0.01 is minis ed if i use atof function this is constant for all values i checked for 10 different values the result is same 0.01 is getting reduced
I'm jus guessing...
Because even a float has limited resolution, it can be that "100.12" is safed as "100.119",
Then if only the last digit is truncated the result is "100.11".
Presume that printf("%f", ) rounds the float value towards zero instead towards the nearest decimal value. To correct the rounding behaviour, you'll need to add a sign dependant offset.
There's an option in ANSI C to select the rounding behviour with a float.h defined constant, but it isn't implemented in many embedded C compilers.