How to store gps values in EEPROM arduino?
Consider TinyGPS++ over TinyGPS only if you are running on Due or processor which can take advantage of the higher precision of 64-bit “double” floating-point.

char data; should be double data;. You're wasting resources otherwise.

data=(gps.location.lat(), 6); isn't how you do it. You only need to specify precision when writing to Serial, like Serial.print(gps.location.lat(), 6);. Make it data = gps.location.lat();.

address ++; should be address = address &lt;=512-sizeof(address) ? (address + sizeof(data)): 0 ;

address &lt;=512-sizeof(address) ensures that the last value written to the EEPROM is written in it's entirety. 

Alternatively, I would recommend this to save you data structure directly to EEPROM, and what @jfpoilpret mentions.