seltsames Problem



  • Hi Leute, ich bin sowohl neu hier im Forum, als auch bei der C-Programmierung. In meinem Studiengang muss ich dies jetzt ein bisschen lernen und in einem kleinen Programm dass ich schreiben muss ist mir das hier passiert:

    Beispielprogramm mit Fehler:

    --------------------------------------------------------------------

    #include <stdio.h>
    #include <math.h>

    int main(void) {

    double h; double a; int j=20;
    h=pow(10,-j);
    a=1+h-1;
    printf("%e und %e\n",h,a);

    return(0);
    }

    ----------------------------------------------------------------------

    Meine Frage: Warum wird mir das hier ausgegeben:

    ---------------------------------------------------

    1.000000e-20 und 0.000000e+00

    -------------------------------------------------

    obwohl beide Zahlen doch völlig gleich sein müssten...

    Hoffe auf schnelle Antwort, muss das Programm morgen korrekt abgeben^^

    Grüße
    phate22



  • sry für nen zweiten post...

    aber noch als zusatzbemerkung:

    auch wenn ich mir h und a mit 50 nachkommastellen ( %.50f ) angeben lasse, kommt für a null raus.
    anscheinend wird also auch intern falsch weiter gerechnet.

    gruß
    phate22



  • Liegt wahrscheinlich daran, dass 2^-20 kleiner ist als DBL_EPSILON edit: bei dir.

    (erster Treffer google für "ieee754 epsilon"):
    http://www.cprogramming.com/tutorial/floating_point/understanding_floating_point_representation.html


Anmelden zum Antworten