Tom schrieb:
> Hallo,
>
> ich habe in C eine Schleife, die eine Reihe von Berechnungen mit floats
> ausführt
Solange du nicht weißt, was du dabei tust, sollst du auf einem PC keine
float verwenden. Verwenden statt dessen double, die sind ein wenig
einfacher zu handhaben, wenn sie auch das grundsätzliche Problem nicht
lösen sondern nur verkleinern.
Aber auf einem PC gibt es nur einen einzigen Grund float zu verwenden:
wenn du Milliarden davon manipulieren musst. In allen anderen Fällen
immer double benutzen.
Mit float hast du ungefähr 6 bis 7 signifikante Stellen. Achtung:
signifikante Stellen sind nicht Nachkommastellen! Bei der Zahl 4321.7658
hast du 4 Vorkommastellen und noch in etwa 2 bis 3 sauebere
Nachkommastellen. Mit jeder Berechnung die du machst, verringert sich
aber deren Signifikanz. Durch Rundungsfehler schrumpfen die
signifikanten Stellen ganz schnell auf 5 bis 6 und kurz darauf auf 4 bis
5 zusammen. Deine Ergebnisse sind immer ungenauer, je mehr du damit
rechnest. Dassselbe Problem hast du im Prinzip auch mit double. Nur
startest du erst mal mit rund 15 signifikanten Stellen. D.h. du hast
mehr Berechnungssspielraum ehe der Fehler so groß wird, dass er dir
deine Ergebnisse komplett versaut.
Wenn du dann immer noch nicht weiter kommst, dann wird dir wohl nichts
anderes übrig bleiben, als dein hochgeheimes Programm mal herzuzeigen.
Rechnen mit Floating Point ist wie das Umschaufeln von Sandhaufen.
Je öfter man es tut, desto weniger Sand und desto mehr Schmutz hat man.