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=Ergebnis
    2.000000;
    printf("Das Ergebnis ist %f\n",Ergebnis);
    system("PAUSE");
    return 0;
    }

    AUSGABE:

    Das Ergebnis1 ist 7.400000
    Das Ergebnis ist 14.799999

    Richtig 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).


Anmelden zum Antworten