Hallo, ich möchte eine Fließekommazahl als String ausgeben. Wenn ich in der Funktion die Zahl die augegeben werden soll, fix zuweise (Code-Beispiel 1), funktioniert das auch. Will ich jedoch eine Zahl aus einer globalen Struktur mir ausgeben lassen, geht das nicht. Code-Beispiel 1: double zahl = 20.003; unsigned char string_buffer[16]; sprintf(string_buffer, "%.3f", zahl); lcd_puts(arial10, string_buffer); --> Ergebnis: "20.003" Code-Beispiel 2: double zahl = glob_struktur.zahl; unsigned char string_buffer[16]; sprintf(string_buffer, "%.3f", zahl); lcd_puts(arial10, string_buffer); --> Ergebnis: "inf(" Den String gebe ich auf einem LCD-Display aus. Die Variable in der globalen Struktur ist auch vom Typ float. Ich habe alle Linker-Optionen für die Verwendung der Float-Funktionalität von sprintf wie im Tutorial angepasst. Hat sonst noch jemand eine Idee, was die Ursache für mein Problem sein könnte? Schon mal danke im Vorraus.
Im zweitem Beispiel solltest du 'zahl' qualifiziert aufrufen. Gruss Robert
zahl wird nicht gelesen, weil es in glob_struktur verpackt ist. Gruss Robert
>double zahl = glob_struktur.zahl; >--> Ergebnis: "inf(" Und was steht in glob_struktur.zahl? Versuch doch mal: glob_struktur.zahl= 10.0; double zahl = glob_struktur.zahl;
Nachtrag: Bei der Berechnung von glob_struktur.zahl ist ein Fehler unterlaufen: Die Zahlen wurden dabei nicht als float interpretiert: glob_struktur.zahl = 1/16; Richtig: glob_struktur.zahl = 1/16.0f; Als Ergebnis kam da immer 0 raus und sprintf hat "inf" (-> infinitessimal) ausgegeben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.