Hi,
there are a lot of questions:
* what range and what resolution do you need? (for your float)
* why do you need float at all? Usually one wants to avoid this with so small microcontrollers.
--> consider to use a fixed point, or an integer where the LSB represents the expected resolution for your float variable.
Example: if you want two decimals resolution: (like "12.34") then use an integer where the LSB represents "0.01". I.E. use the integer value of "1234" to represent "12.34".
* for writing a float into an EEPROM you don´t need to convert the variable at all. Just write the 4 bytes of the float and you are done.
* for writing to the LCD you don´t need a "float to integer" either. You rather need a "float to ASCII"
Klaus
added:
btw: your "losing 0.1" most probably is caused by this line: (I´m not sure, because I´m not very familiar with C)
"i=(int)y;"
the "int" statement may just truncate the decimals instead of rounding it.
"using i=(int)y+0.5;"
may solve this problem.