M. K. schrieb:
> Die 11.5 sind auch falsch, kann eigentlich gar nicht sein. TempWert[0]
> ist ja negativ, die if-Anweisung müsste schonmal dazu führen, dass für
> das %s ein - gedruckt wird.
Nein, denn statt %s hätte eigentlich %c heißen müssen. Bei tempWert[1]
kommt noch dazu, dass das Ergebnis des Casts (char)TempWert[1] davon
abhängt, ob auf dem Zielcompiler char mit oder ohne Vorzeichen ist.
> Für das erste %d muss eigentlich ein -11 heraus kommen. Da hast du dann
> schon ein '--11' stehen und da kommt dann noch deine Modulo-Operation
> hinzu.
Ja. Da müsste nach dem Punkt eigentlich auch nochmal ein Minus kommen.
Wenn ich aus dem %s ein %c mache, kommt bei mir auch tatsächlich
"--11.-1" raus.
> Einfacher wäre es wohl wenn du geschrieben hättest:
> sprintf(read_write_buffer, "%f", TempWert[0]/10.0);
> aber das geht warum genau nicht?
Ich vermute, dass die Nutzung der floating-Point-Lib vermieden werden
soll. Sonst könnte man in tempWert[0] ja auch gleich 11.1 statt 111
speichern. Deine Variante braucht zusätzlich zur Floating-Point-Lib auch
noch ein sprintf, das float unterstützt. So braucht dann nur die eine
Zeile Code vermutlich mehrere Kilobytes Flash.