¿Reglas prácticas para minimizar los errores de coma flotante en C?

Con respecto a minimizar el error en operaciones de punto flotante, si tengo una operación como la siguiente en C:

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

¿Cambiará el resultado del cálculo si divido los pasos de multiplicación y resta, es decir:

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

Me pregunto si una CPU trataría estos cálculos de manera diferente y, por lo tanto, el error puede ser menor en un caso.

Si no, lo que supongo de todos modos, ¿hay alguna buena regla general para mitigar el error de punto flotante? ¿Puedo dar masajes a los datos de una manera que ayude?

Por favor, no solo diga "use mayor precisión", eso no es lo que busco.

EDITAR

Para obtener información sobre los datos, en general los errores parecen ser peores cuando la operación da como resultado un número muy grande como 123456789. Los números pequeños, como 1.23456789, parecen arrojar resultados más precisos después de las operaciones. ¿Me estoy imaginando esto o escalar números más grandes ayudaría a la precisión?

Respuestas a la pregunta(1)

Su respuesta a la pregunta