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