Hallo,
in C habe ich ein Phänomen, welches nach einer Erklärzung schreit. Wer hilft mir mal auf die Sprünge?
Jonas
Ich habe das
#include <stdio.h>
void summe_float() {
float x1 = 10000.0, x2 = -1.0e-3 / 9.0,x3 = 25.0e2, x4 = 1.0e-3 / 7.0, x5 = -12.5e3;
float y = x1;
y+=x2;
y+= x3;
y+= x4;
y+= x5;
float z = x1+x2+x3+x4+x5;
printf("Fall 1: (Addition schrittweise):%.21f \n",y);
printf("Fall 2: (Addition direkt):%.21f \n",z);
return 0;
}
int main() {
summe_float();
return 0;
}
mal kopiert, compiliert und ausgeführt:
/tmp$ gcc -o test.bin test.c
test.c: In function ‘summe_float’:
test.c:15:1: warning: ‘return’ with a value, in function returning void [enabled by default]
return 0;
^
/tmp$ ./test.bin
Fall 1: (Addition schrittweise):0.000000000000000000000
Fall 2: (Addition direkt):0.000000000000000000000