Forum: Mikrocontroller und Digitale Elektronik %f - Formatierung in printf()


von switch (Gast)


Lesenswert?

Hallo,

ich bin am verzweifeln. Ich habe nachfolgenden Beispielcod:
1
    double test = 235948.004;
2
3
    printf("test als unsigned = %u \n", (unsigned long)test);
4
    printf("test als float    = %f \n",                test);

Die Ausgabe sieht dann so aus:
1
test als unsigned = 235948 
2
test als float    = f

Das ich mit "unsigned" den Wert vor dem Komma erhalte ist mir durchaus 
klar. Was ich aber nicht verstehe ist, warum Spuckt mir der Code in der 
letzten Zeile immer ein "f" anstatt die Zahl aus?

Hat jemand eine Erklährung dafür?

von ervfds (Gast)


Lesenswert?

Welcher Compiler für welches System? Vielleicht ist %f nicht 
implementiert...

von H.Joachim S. (crazyhorse)


Lesenswert?

Jo, liegt sicher an den Compilereinstellungen.
printf() ist ja schon ein kleines Speichermonster, deswegen kann ma oft 
einstellen, was überhaupt unterstützt werden soll.

Also, welcher Compiler?

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Notfalls kannst Du das nachbilden:
1
int  a, b;
2
double wert = 123.45;
3
4
a = (int) wert;
5
b = (int) ((wert - (int) wert)) * 100;
6
7
printf( "%d.%02d", a, b);

von Krapao (Gast)


Lesenswert?


von H.Joachim S. (crazyhorse)


Angehängte Dateien:

Lesenswert?

oder CodeVision, dann wie im Bild.

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
Noch kein Account? Hier anmelden.