gpt4 book ai didi

将 float 转换为相应的整数

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

我有正弦函数(对一个正弦波取样本值=4096)。我希望将相应的浮点值转换为整数值。浮点值类似于 0.001534 十六进制,如 3AC90FD6,相应的整数值为 986255318。当我尝试绘制图表时,它适用于所有浮点值,但不适用于整数值.... .

这是我使用过的逻辑....并且不能像将值乘以100那样进行缩放,这样是 Not Acceptable ...请帮助我,我是c语言的新手。

#include <stdio.h>
#include <string.h>
#include<math.h>

union {
float f;
unsigned char b[sizeof(float)];
long g[sizeof(float)];
} v;

int main(void)
{
float temp,d;
int r;
temp = ((2 * M_PI) / 4096);
size_t i;

for(i = 0; i < 4096; i++)
{
d = sin (temp * i );
v.f = d;
printf("\n %f \t %X", v.f, ( ( v.b[0] ) | ( v.b[1] << 8 ) | ( v.b[2] << 16 ) | ( v.b[3] << 24 ) ));
printf(" \t %d \n",(( v.g[0] ) | ( v.g[1] << 8 ) | ( v.g[2] << 16 ) | ( v.g[3] << 24 ) ));
}
return 0;
}

最佳答案

要将 float 转换为相应的整数,您不应简单地获取这些位并将它们重新解释为整数。

简单地做:

int i = (int)myFloat;

这将导致内部格式从 float 转换为 intfloat 的小数部分将被截断,因此它将向下舍入到 0。

编辑

由于您的值是正弦调用的结果,因此它们将在 [-1.0f, 1.0f] 范围内。如果您想要 [-4096, 4096] 范围内的值,只需执行以下操作:

int i = (int)(4096 * myFloat);

关于将 float 转换为相应的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25502611/

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