Fehler bei Division Ergebnisdarstellung
-
Hi
habe Probleme das Ergebnis folgender in C geschriebener Berechnung zu verstehen:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float i = 10.400000;
float r = 3.000000;
float Ergebnis;
Ergebnis=i-r; //heißt also (10.4-3)2
printf("Das Ergebnis1 ist %f\n",Ergebnis);
Ergebnis=Ergebnis2.000000;
printf("Das Ergebnis ist %f\n",Ergebnis);
system("PAUSE");
return 0;
}AUSGABE:
Das Ergebnis1 ist 7.400000
Das Ergebnis ist 14.799999Richtig waere doch 14.8 ??? Wo liegt der Fehler ?? DANKE
-
Computer rechnen auch bei Fließkommazahlen im Dualsystem.
So wie z.B. 1/3 als Dezimalzahl nicht richtig abgebildet werden kann, haben Computer bei anderen Zahlen solche Probleme (z.B. 0.1).Zudem ist auch die Anzahl der signifikanten Stellen begrenzt.
Bei float liegt sie i.A. bei 6 Stellen.
printf gibt bei %f 6 Nachkommastellen aus.Entweder du begrenzt die Nachkommastellen:
printf("Das Ergebnis ist %.3f\n",Ergebnis);
Oder besser du nimmst kein float sondern gleich double.
Das bringt nur Vorteile.
Nur wenn du wirklich große (richtig große) Felder/Arrays von Fließkommazahlen hast, kannst du zum einsparen von Speicherplatz auf float ausweichen.
Beo printf ändert sich nichts. Bei scanf ist der formatspecifier dann %lf (kleines LF).