uint16_t ist ein integer mit 16bit nicht mit 16 Zeichen.

Schau dir Festkomma-arithmetik an. Floats sind auf Atmegas ziemlich speicher und rechenintensiv.