Вы что-то слышали про вычитание близких чисел?

Или вот еще пример опасной редукции:
float a, b, c;
a=123456789;
b=123456788;
c=a-b;
Что мы должны получить? Конечно же 1.
Но,
printf("Result: %f\n", f);
дает ответ: 8.
Неплохо, да?
Т.е. при наличии относительной погрешности представления исходных данных около 3E-8, мы получили относительную погрешность результата более чем в 2E+8 раз больше