Code:
#include <stdio.h>
int main (void)
{
double j;
for( j = 0.0; j < 5.0; j += 0.1 )
if( j == 2.0 )
printf( "Habs\n" );
return 0;
}
Ein gutes Beispiel, wo die Mathematik nichts dem Programmieren zutun hat. Wegen der Gleitkommazahl kommt da nie "Habs" raus, obwohl die Mathematik etwas anderes behauptet. Aber gibt es da keine Möglichkeit, dass dort das richtige Ergebnis rauskommt? Ich meine, der Compiler sieht ja, dass es sich hierbei um eine Schleife handelt, die terminiert und eine if abfrage, die beim 20. Ausführen etwas ausgibt. Gibt es keine Möglichkeit, dass der Compiler daraus "das Richtige" baut?