c++ - 在文件可移植性问题中存储 32 位 float

标签 c++ floating-point portability

如果我通过这段代码在文件中存储一个 float

fwrite((void*)(&v), sizeof(v), 1, f); // v is a float.

使用此代码读取文件的程序多久会因为 float 是 8 个字节而不是 4 个字节而导致运行时错误?

float v;
fread((void*)(&v), sizeof(v), 1, f);
return v;

我能否始终读取 4 个字节并将其转换为 8 个字节的 float ?这样会更便携吗?

强调 64 位与 32 位的不同 Windows 平台。

最佳答案

我不太担心 float 的大小,而更担心它的字节顺序。我会说绝大多数 C++ 实现使用 IEEE 754,这意味着 float 总是 32 位和双 64 位。

您可能希望只序列化值的文本表示,或者特别注意确保字节顺序正确。

关于c++ - 在文件可移植性问题中存储 32 位 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6715545/

相关文章:

c# - 找到二维数组中的对角线

c++ - 在不创建新拷贝的情况下初始化成员变量

c++ - 这个 typedef 语句中的语法是做什么的?

c# - 使用 LibTIFF.NET C# 将具有浮点像素值的 32 位灰度 Tiff 数组化

c++ - 重写一个类以使其更通用以实现可移植性

c++ - 尝试按值从 vector 中删除元素

python - 使用python将字符串数组转换为 float

python-3.x - Python 中的舍入

c++ - OpenGL:混叠是一种可预测且一致的现象吗?

你能在 c 中运行初始化函数吗?