gpt4 book ai didi

在C中将int16转换为float

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

如何将 16 位 int 转换为 float ?

我有一个带符号的 16 位变量,我被告知需要以 3 位小数的精度显示,所以我认为这将涉及到 float 的转换?

我已经尝试过下面的方法,将我的 16 位复制到 float 中,但这似乎不对。

float myFloat = 0;
int16_t myInt = 0x3e00;
memcpy(&myFloat, &myInt, sizeof(int));

我还阅读了有关半精度浮点格式的信息,但不确定如何处理这个问题......如果我需要的话。

我正在使用 GCC。

更新:数据源是一个 char 数组 [2],它是我从 i2c 接口(interface)获得的。然后我将其拼接成一个有符号整数。

有人可以帮忙吗?

最佳答案

I have a signed 16 bit variable which i'm told i need to display with an accuracy of 3 decimal places

如果有人告诉您整数值可以这样显示,他/她应该从C初学者类(class)开始。

唯一的可能性是整数值已被缩放(相乘)。例如,12.456 的值乘以 1000 后可以存储在整数中。如果是这种情况:

float flv;
int intv = 12456;

flv = (float)intv / 1000.0f;

您还可以打印这个缩放后的整数,而无需转换为 float

printf("%s%d.%03d\n", intv < 0 ? "-": "", abs(intv / 1000), abs(intv % 1000));

关于在C中将int16转换为float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179707/

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