Как-то при попытке чтения из файла при помощи функции fscanf у меня некорректно прочитывались числа с плавающей точкой. Дело в том, что я читал в double:
double x, y;
fscanf(file, "%f%f", &x, &y);
Слышал, что оптимизатор подключает библиотеку работы с плавающей запятой только если встретит объявление переменной типа float.
Возможно и не в этом дело, но после исправления на
float x, y;
fscanf(file, "%f%f", &x, &y);
все заработало.
Но потом я узнал, что есть спецификатор lf для double:
double x, y;
fscanf(file, "%lf%lf", &x, &y);
Тоже работает.
Совет: при ошибке попробуйте не оставлять пробелов между спецификаторами %f %f.