gpt4 book ai didi

c - float 包含超过 4byte

转载 作者:行者123 更新时间:2023-11-30 20:34:34 27 4
gpt4 key购买 nike

我想通过读取二进制文件将值 4.0 写入我的 txt 文件中,如下所示

0000000: 046a 6f68 6e03 646f 6500 0000 0140 8000 .john.doe....@..

0000010: 00

我想要这个输出。

0000000: 6a6f 686e 2064 6f65 2031 2034 2e30 0a john doe 1 4.0.

我的问题是写入浮点值。

char buffer[NAME_MAX];
float *gpaPtr;
float gpaNumber = 0;

fread(buffer, sizeof(float) , 1, fp);
gpaPtr = buffer;
gpaNumber = (float)*gpaPtr;
printf("%f\n", gpaNumber);
clearArray(buffer);

fprintf(fp2,"%s %s %d %f\n" ,firstName, lastName, idNumber,gpaNumber );

当我使用这段代码写入文件时,结果是这样的。

0000000: 6a6f 686e 2064 6f65 2031 2034 2e30 3030 john doe 1 4.000000

0000010: 3030 300a

我的代码写得比我想要的多。

我使用浮点指针指向缓冲区的首地址,它应该只写入我认为的浮点大小(gpaPtr和gpaNumber都是浮点)

我猜问题出在 32 位单精度类型和 64 位 double 类型上。

请让我知道如何获得正确的 GPA 大小以及为什么会发生这种情况。

最佳答案

请阅读一些有关 printf() 函数的文档。请密切注意 %f 转换说明符的“精度”字段。

http://en.cppreference.com/w/c/io/fprintf

关于c - float 包含超过 4byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42180078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com