Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否不可能在QdataStream中为浮点写入4字节,为双精度写入8字节?_C++_Qt - Fatal编程技术网

C++ 是否不可能在QdataStream中为浮点写入4字节,为双精度写入8字节?

C++ 是否不可能在QdataStream中为浮点写入4字节,为双精度写入8字节?,c++,qt,C++,Qt,我需要(我必须)向一个qdatastream写入很多浮点值,而且我只需要使用4个字节。 setFloatingPointPrecision或为浮点和双精度写入4或8。 我原以为它适用于qreal,但我很惊讶它适用于float-a-double类型 有什么解决办法吗?谢谢如果你只想写四个字节,你有没有考虑过将你的doubles转换成float?我不确定什么是qdatastream,但这可能适合您。如果您只想写入四个字节,您是否考虑过静态\u强制转换将双精度转换为浮点?我不确定什么是qdatastr

我需要(我必须)向一个qdatastream写入很多浮点值,而且我只需要使用4个字节。 setFloatingPointPrecision或为浮点和双精度写入4或8。 我原以为它适用于qreal,但我很惊讶它适用于float-a-double类型


有什么解决办法吗?谢谢

如果你只想写四个字节,你有没有考虑过将你的
double
s转换成
float
?我不确定什么是
qdatastream
,但这可能适合您。

如果您只想写入四个字节,您是否考虑过
静态\u强制转换
双精度
转换为
浮点
?我不确定什么是
qdatastream
,但这可能适合您。

一个可能的解决方法是编写函数并重载它:

void writeReal(QDataStream& out, float f)
{
    out.setFloatingPointPrecision(QDataStream::SinglePrecision);
    out << f;
}

void writeReal(QDataStream& out, double f)
{
    out.setFloatingPointPrecision(QDataStream::DoublePrecision);
    out << f;
}

一种可能的解决方法是编写函数并重载它:

void writeReal(QDataStream& out, float f)
{
    out.setFloatingPointPrecision(QDataStream::SinglePrecision);
    out << f;
}

void writeReal(QDataStream& out, double f)
{
    out.setFloatingPointPrecision(QDataStream::DoublePrecision);
    out << f;
}

我正在使用Qdatastream来管理我的数据I/o操作。思考未来,网络沟通,平台独立,终端自由。另外,我不想将double强制转换为float,我只想使用4个字节作为float,8个字节作为double。setFloatingPrecision应用程序4或8同时使用…我正在使用Qdatastream管理我的数据I/o操作。思考未来,网络沟通,平台独立,终端自由。另外,我不想将double强制转换为float,我只想使用4个字节作为float,8个字节作为double。Qdatastream.setFloatingPrecision应用程序4或8两者都有…在持久存储或网络通信中放置任何类型的浮点数字都是不明智的。唉,IEEE浮点并不是唯一的浮点运算。@zack,因此他使用Qt的存储/网络机制(基于下面的评论)。只要他声明在每一端使用哪个版本,表示将保持不变,并且存储数据不会出现问题@g19fanatic该文档中唯一提到的浮点格式(与大小相反)是
@g19fanatic我刚刚检查了代码,它没有做正确的事情。它盲目地假设本机浮点格式是IEEE。请参阅@Zack,或者QDataStream可以在Qt支持的每个平台上正常工作。如果不是这样的话,我会感到惊讶。在持久存储或网络通信中放置任何类型的浮点数都是不明智的。唉,IEEE浮点并不是唯一的浮点运算。@zack,因此他使用Qt的存储/网络机制(基于下面的评论)。只要他声明在每一端使用哪个版本,表示将保持不变,并且存储数据不会出现问题@g19fanatic该文档中唯一提到的浮点格式(与大小相反)是
@g19fanatic我刚刚检查了代码,它没有做正确的事情。它盲目地假设本机浮点格式是IEEE。请参阅@Zack,或者QDataStream可以在Qt支持的每个平台上正常工作。如果不是这样的话,我会很惊讶。这几乎是完美的,非常感谢你的胡言乱语。我唯一要添加的是读取并恢复floatingPointPrecision的初始值,以保持POLA。为什么不在每次输入/输出浮点时简单地设置为single并返回到double,并将默认值保留为double?这几乎是完美的,非常感谢这一混乱。我唯一要添加的是读取并恢复floatingPointPrecision的初始值,以保持POLA。为什么不在每次输入/输出浮点时简单地设置为single并返回到double,并将默认值保留为double?