Du musst die Berechnung entweder als float speichern oder aber innerhalb von dtostr machen. Sonst werden die Nachkommastellen ( die Mantisse) abgeschnitten, da das Ergebnis als uint16 interpretiert wird.