Seite 1 von 1

Frage zu Programm

VerfasstCOLON Freitag 17. September 2010, 12:20
von hvt
Hallo Leute,

habe mal begonnen mit C zu werken. Ich verstehe aber nicht, warum mir folgendes Programm


#include <stdio.h>

int main ()
{
float wert1 = 123.123;
double wert2 = 1234.1234;

printf("Der Wert von wert1: %f\n", wert1);
printf("Der Wert von wert2: %lf\n", wert2);

return 0;
}
folgendes Ergebnis ausgiebt

Der Wert von wert1: 123.123001
Der Wert von wert2: 1234.123400
Es müsste doch 123.123 und 1234.1234 sein, oder? :shock:

Re: Frage zu Programm

VerfasstCOLON Freitag 17. September 2010, 13:16
von win_dennis_xp
Also ich kann c leider nicht, aber ich weis, dass bei den Befehlen double und float

CodeCOLON Alles auswählen

           Bitanzahl n   Wertebereich                Genauigkeit
  float        32        1.5E-45   .. 3.4E38          7- 8 Stellen
  double       64        5.0E-324  .. 1.7E308        15-16 Stellen
  long double  80        1.9E-4951 .. 1.1E4932       19-20 Stellen
In wie weit das dann zusammen hängt mit c, kann ich dir leider nicht sagen.

Re: Frage zu Programm

VerfasstCOLON Freitag 17. September 2010, 13:21
von Lorag
Ich finde die Ausgabe korrekt – %f gibt standardmäßig sechs Nachkommastellen. Die 1 hinten im ersten Fall ist ein wenig irritierend, aber da müsste man ggf. die Rundungsparameter des Compilers umstellen.
Um die Nachkommastellen zu beschränken, müsste der Code so aussehen:

CodeCOLON Alles auswählen

printf("Der Wert von wert1: %.3f\n", wert1);
printf("Der Wert von wert2: %.4lf\n", wert2)

Re: Frage zu Programm

VerfasstCOLON Freitag 17. September 2010, 19:31
von try
Jupp - die Ausgabe stimmt (bis auf die ominöse 1)

Allgemein:

In C kannst Du die Genauigkeit einer Variablen zB mit acht Kommastellen genau vereinbaren aber sie mit 16 Kommastellen ausgeben lassen.
Der Wert der Variblen bleibt und die Ausgabe der Mehrkommastellen erfolgt dann mit den Nullen.

Umgekehrt geht dies auch.
Die Genauigkeit einer Variablen zB mit acht Kommastellen genau vereinbaren aber ohne ausgeben.

Die Genauigkeits- und Ausgabevereinbarungen habe ich nicht mehr im Kopf, sie sind aber mMn in jedem C-Lehrbuch erklärt. ( Da war was mit short, long, double usw ...)

Viel Spass noch beim Programmieren !
Gruss - try

Re: Frage zu Programm

VerfasstCOLON Samstag 18. September 2010, 21:19
von hvt
Ok, danke Leute! 8)