Ajuda com eeprom

boa noitegalera, estou tendo um problema com a eeprom externa, estou salvando um valor de uma varial tipo float, mais quando vou ler o valor nao consigo ler as casa depois do ponto, por exemplo 27.5 so consigo ler 27.
Sera que é por causa do valor do endereço??, se for, como poderia fazer para ler o primeiro endereço e o segundo, e depois posso apenas fazer uma soma dos 2 valores?
Valeu

Esqueci de mencionar que estou usando o codigo do cookbook da biblioteca Wire.h com algumas modificaçoes para realizar o que eu preciso

sem ver o código é impossível de ajudar.

variavel
double temp_float ;

leirura
temp_float = I2CEEPROM_Read(temperatura);

endereço

const byte temperatura = 0x51;

função para ler da eeprom

byte I2CEEPROM_Read(unsigned int address ){

byte data;
Wire.beginTransmission(EEPROM_ID);
Wire.send((int)highByte(address) );
Wire.send((int)lowByte(address) );
Wire.endTransmission();
Wire.requestFrom(EEPROM_ID,(byte)1);
while(Wire.available() == 0) // wait for data
;
data = Wire.receive();
return data;
}

função para escrever

void I2CEEPROM_Write( unsigned int address, byte data ){

Wire.beginTransmission(EEPROM_ID);
Wire.send((int)highByte(address) );
Wire.send((int)lowByte(address) );
Wire.send(data);
Wire.endTransmission();
delay(5); // wait for the I2C EEPROM to complete the write cycle
}

escrevendo na eeprom
I2CEEPROM_Write( temperatura, temp_float );

a função i2ceeprom_read retorna um byte... daí não ter a vírgula.

no entanto, a função de write, faz o mesmo.
tens de decompor a variavel double em 4 bytes, para fazer o que queres.

e como posso fazer para decompor??

dá uma vista de olhos aqui:

http://arduino.cc/forum/index.php/topic,41497.0.html

Tem lá isto:

void EEPROM_writeDouble(int ee, double value)
{
    byte* p = (byte*)(void*)&value;
    for (int i = 0; i < sizeof(value); i++)
        EEPROM.write(ee++, *p++);
}

double EEPROM_readDouble(int ee)
{
    double value = 0.0;
    byte* p = (byte*)(void*)&value;
    for (int i = 0; i < sizeof(value); i++)
        *p++ = EEPROM.read(ee++);
    return value;
}