将float值导出到文件时遇到了一个奇怪的问题.我希望每个浮点数具有相同的长度(显然),但我的程序有时会将其输出为32位数,有时输出为40位数.仍然显示此行为的程序的最小工作示例是:
#include <stdio.h>
const char* fileName = "C:/Users/Path/To/TestFile.txt";
float array [5];
int main(int argc, char* argv [])
{
float temp1 = 1.63006e-33f;
float temp2 = 1.55949e-32f;
array[0] = temp1;
array[1] = temp2;
array[2] = temp1;
array[3] = temp2;
array[4] = temp2;
FILE* outputFile;
if (!fopen_s(&outputFile, fileName, "w"))
{
fwrite(array, 5 * sizeof(float), 1, outputFile);
fclose(outputFile);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我希望输出文件包含正好20(5×4)个字节,每个字节代表一个浮点数.但是,我明白了:
8b 6b 07 09 // this is indeed 1.63006e-33f
5b f2 a1 0d 0a // I don't know …Run Code Online (Sandbox Code Playgroud)