Hola,
Prueba con este ejemplo, el Serial.print a mí me da 3.141593
union
{
unsigned int ints[2];
float toFloat;
} foo;
void setup()
{
Serial.begin(9600);
}
void loop()
{
// 3.141593
foo.ints[0]=4059;
foo.ints[1]=16457;
Serial.println(foo.toFloat, 6); // con 6 decimales
Serial.println(foo.ints[0]);
Serial.println(foo.ints[1]);
Serial.println("");
delay(500);
}