Установка точности чисел с плавающей запятой одинаковой при записи и чтении в двоичных файлах
У меня есть код, который записывает числа с плавающей точкой, получая в режиме реального времени с компьютера и копировать в двоичный файл.
WriteToFile(float* buffer, int bufSize )
{
ofstream out;
out.open(m_fileName, ios::app);
if (out )
{
cout<<" Writing file "<<endl;
for(int i=0; i< bufSize; i++)
{
out.precision(6);
out.setf(ios::fixed,ios::floatfield);
out.write( (const char*) &buffer[i], sizeof(float));
cout << buffer[i] << ", ";
}
cout << endl;
posp += bufSize;
out.close();
}
}
Здесь float * buffer - указатель на массив, который доставляет данные с машины, а int bufSize - размер (общее количество записываемых в буфере чисел, скажем, 70 чисел).
Данные позже читаются как числа с плавающей точкой
ifstream fin;
fin.open(m_fileName);
if (fin ))
{
fin.setf(ios::fixed, ios::floatfield);
fin.seekg(posg);
fin.read((char*)buffer,bufSize*sizeof(float));
posg = fin.tellg();
}
fin.close();
Код работает хорошо, за исключением того, что порядок чтения чисел становится неупорядоченным в середине чтения, я предполагаю, что это как-то связано с установленной точностью. Я установил точность 6 для записи и не настроил точность для чтения, Может любой поможет мне синхронизировать точность как для записи, так и для чтения двоичных файлов