Faustregeln zur Minimierung von Gleitkommafehlern in C?

Zum Minimieren des Fehlers bei Gleitkommaoperationen, wenn ich eine Operation wie die folgende in C habe:

float a = 123.456;
float b = 456.789;
float r = 0.12345;
a = a - (r * b);

Ändert sich das Ergebnis der Berechnung, wenn ich die Multiplikations- und Subtraktionsschritte aufteile, d.h.

float c = r * b;
a = a - c;

Ich frage mich, ob eine CPU diese Berechnungen dann anders behandeln würde und dabei der Fehler in einem Fall kleiner sein kann?

Wenn nicht, was ich sowieso vermute, gibt es gute Faustregeln gegen Gleitkommafehler? Kann ich Daten auf eine Weise massieren, die hilft?

Bitte sagen Sie nicht einfach "Höhere Präzision verwenden" - das ist nicht mein Ziel.

BEARBEITEN

Informationen zu den Daten zeigen im Allgemeinen, dass Fehler schlimmer sind, wenn die Operation eine sehr große Zahl wie 123456789 ergibt. Kleine Zahlen wie 1.23456789 scheinen nach Operationen genauere Ergebnisse zu liefern. Bilde ich mir das ein oder würde die Skalierung größerer Zahlen zur Genauigkeit beitragen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage