Frage zu Programm

BUTTON_POST_REPLY
hvt
Mehrmalsposter
BeiträgeCOLON 93
RegistriertCOLON Samstag 15. November 2008, 20:29

Frage zu Programm

Beitrag von hvt » Freitag 17. September 2010, 12:20

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:

Benutzeravatar
win_dennis_xp
Moderator
BeiträgeCOLON 300
RegistriertCOLON Donnerstag 8. Oktober 2009, 19:52
WohnortCOLON Sindelfingen
CONTACTCOLON

Re: Frage zu Programm

Beitrag von win_dennis_xp » Freitag 17. September 2010, 13:16

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.
--- EeePc 901 mit Windows XP Home SP3 ---
--- Medion Akoya S3211 mit Windows 7 Home Premium ---

Benutzeravatar
Lorag
Power User
BeiträgeCOLON 1202
RegistriertCOLON Dienstag 18. März 2008, 23:33

Re: Frage zu Programm

Beitrag von Lorag » Freitag 17. September 2010, 13:21

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)

Benutzeravatar
try
Premium User
BeiträgeCOLON 976
RegistriertCOLON Samstag 25. April 2009, 16:40

Re: Frage zu Programm

Beitrag von try » Freitag 17. September 2010, 19:31

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
-- 701 4G --- 1GiB RAM - Ubuntu 10.10 Netbook
- 1000 H ---- 2GiB RAM - XP (- immer noch ) ----
--------- Any Mistakes ? --> A t c t R ! <---------

hvt
Mehrmalsposter
BeiträgeCOLON 93
RegistriertCOLON Samstag 15. November 2008, 20:29

Re: Frage zu Programm

Beitrag von hvt » Samstag 18. September 2010, 21:19

Ok, danke Leute! 8)

BUTTON_POST_REPLY

Zurück zu

Wer ist online?

Mitglieder in diesem Forum: 1 und 0 Gäste