我需要(我必须)向qdatastream编写大量的浮点数,这是必要的,我只使用4个字节。 setFloatingPointPrecision或4或8写入浮点数和双精度数。 我认为它适用于qreal,但我很惊讶它适用于浮动双重类型..
有什么解决方案吗?谢谢
答案 0 :(得分:4)
可能的解决方法是编写一个函数并重载它:
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
答案 1 :(得分:0)
如果您只想写四个字节,您是否考虑过static_cast
double
到float
?我不确定qdatastream
是什么,但可能对你有用。