Carga de datos flotantes desde archivo
Estoy haciendo unos primeros pinitos en C++ y me he atascado en la carga de datos de tipo número real o coma flotante desde un archivo en el que figuran separados por comas. El programita que he escrito para ello es el siguiente:
#include <iostream>
#include <iomanip>
using namespace std;
float fX, fY, fZ;
FILE *pEnt;
main()
{
if (NULL ==(pEnt=fopen("nivelesM.txt","rb"))) // si no existe error
{
cerr << "No existe el archivo " << "nivelesM.txt" << " o est en uso" << endl;
return(0);
}
fscanf(pEnt, "%f, %f, %f", &fX, &fY, &fZ);
while (!feof(pEnt))
{
cout << setprecision(3) << fixed << "Le¡do registro con x = " << fX << " y = " << fY << " z = " << fZ << endl;
fscanf(pEnt, "%f, %f, %f", &fX, &fY, &fZ);
}
fclose(pEnt);
}
El archivo nivelesM.txt tiene 24 filas y, por poner un ejemplo del problema, las tres primeras son:
791039.015, 3092313.785, -26.248
791039.015, 3092312.785, -26.248
791029.396, 3092311.043, 2.645
Y lo que obtengo es:
Leído registro con x = 791039.000 y = 3092313.750 z = -26.248
Leído registro con x = 791039.000 y = 3092312.750 z = -26.248
Leído registro con x = 791029.375 y = 3092311.000 z = 2.645
Cómo se puede ver hay una ligera discrepancia en los valores de x e y que no consigo comprender.
¿Puede alguien echarme una mano?