Возможный обходной путь - написать функцию и перегрузить ее:
void writeReal(QDataStream& out, float f)
{
out.setFloatingPointPrecision(QDataStream::SinglePrecision);
out << f;
}
void writeReal(QDataStream& out, double f)
{
out.setFloatingPointPrecision(QDataStream::DoublePrecision);
out << f;
}
Теперь просто используйте эту функцию для сериализации чисел с плавающей запятой и двойных чисел
QFile file("file.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
writeReal(out, (float) 3.14); // Casting to float so single precision will be used
writeReal(out, (double) 3.14); // Casting to double so double precision will be used