Frage zu Programm

Frage zu Programm

Beitragvon 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:
hvt
Mehrmalsposter
 
Beiträge: 93
Registriert: Samstag 15. November 2008, 20:29

Re: Frage zu Programm

Beitragvon 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

Code: 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
win_dennis_xp
Moderator
 
Beiträge: 300
Registriert: Donnerstag 8. Oktober 2009, 19:52
Wohnort: Sindelfingen

Re: Frage zu Programm

Beitragvon 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:
Code: Alles auswählen
printf("Der Wert von wert1: %.3f\n", wert1);
printf("Der Wert von wert2: %.4lf\n", wert2)
Benutzeravatar
Lorag
Power User
 
Beiträge: 1202
Registriert: Dienstag 18. März 2008, 23:33

Re: Frage zu Programm

Beitragvon 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 ! <---------
Benutzeravatar
try
Premium User
 
Beiträge: 976
Registriert: Samstag 25. April 2009, 16:40

Re: Frage zu Programm

Beitragvon hvt » Samstag 18. September 2010, 21:19

Ok, danke Leute! 8)
hvt
Mehrmalsposter
 
Beiträge: 93
Registriert: Samstag 15. November 2008, 20:29


Zurück zu Programmiersprachen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron