Arduino float is 32 bits, 8 bytes in memory. You can store those 8 bytes and read them back later. As long as you put them back in the same order you stored them it will work.
Just for example, tested:
float restored = 0.0, dataPoint = 1.234; // I will save dataPoint and put it back in restore
byte *bytPtr; // this is a pointer to variable type byte -- not obvious for new members
byte saveArray[ 4 ]; // I will save the float here, 4 bytes to hold 32 bits
void setup( void )
{
Serial.begin( 9600 );
Serial.print( "My float is " );
Serial.println( dataPoint, 4 );
bytPtr = ( byte* ) &dataPoint; // &dataPointer gives the float-type address of dataPointer
// the ( byte* ) forces the compiler to fit the address onto a
// byte-type pointer. The compiler keeps track of types and
// the pointer holds the address, all UNO addresses are 16-bit.
// I want it byte-type to store to a byte-type array.
// initially, bytPtr points to the 1st byte in dataPoint
// I will "walk through" both the array and the 4 bytes of dataPoint together
for ( byte i = 0; i < 4; i++ )
{
saveArray[ i ] = *bytPtr; // * bytPtr gives the contents of the byte addressed by bytPtr
bytPtr++; // bytPtr now points to the next byte in dataPoint
}
Serial.print( "Float now stored in saveArray = " );
for ( byte i = 0; i < 4; i++ )
{
Serial.print( saveArray[ i ], HEX ); // hex is just a way to view data, the bits are not changed
Serial.print( " " );
}
Serial.println( );
bytPtr = ( byte* ) &restored;
// initially, bytPtr points to the 1st byte in restored
for ( byte i = 0; i < 4; i++ )
{
*bytPtr = saveArray[ i ];
bytPtr++;
}
Serial.print( "My restored float is " );
Serial.println( restored, 4 );
}
void loop( void )
{
}
Otherwise you store text to SD. That is bigger and slower but advantage is a file that you can read and import into most spreadsheets or databases pretty easily.
Advantage of saving and restoring as data bytes is it is *far* faster and needs *way* less code.